Index: src/bp-core/bp-core-avatars.php
===================================================================
--- src/bp-core/bp-core-avatars.php
+++ src/bp-core/bp-core-avatars.php
@@ -1936,7 +1936,7 @@
  * @return bool True to load the Webcam Avatar UI part. False otherwise.
  */
 function bp_avatar_use_webcam() {
-	global $is_safari, $is_IE;
+	global $is_safari, $is_IE, $is_chrome;
 
 	/**
 	 * Do not use the webcam feature for mobile devices
@@ -1951,7 +1951,7 @@
 	 *
 	 * @see  http://caniuse.com/#feat=stream
 	 */
-	if ( $is_safari || $is_IE ) {
+	if ( $is_safari || $is_IE || ( $is_chrome && ! is_ssl() ) ) {
 		return false;
 	}
 
Index: src/bp-core/css/avatar.css
===================================================================
--- src/bp-core/css/avatar.css
+++ src/bp-core/css/avatar.css
@@ -170,7 +170,10 @@
 	text-align: center;
 }
 
-.drag-drop-inside p.drag-drop-info {margin-top: 0;}
+.drag-drop-inside p.drag-drop-info {
+	display: block;
+	margin-top: 0;
+}
 
 #avatar-to-crop {
 	margin: 0 auto 20px ;
Index: src/bp-core/js/bp-plupload.js
===================================================================
--- src/bp-core/js/bp-plupload.js
+++ src/bp-core/js/bp-plupload.js
@@ -284,6 +284,22 @@
 			$( self ).trigger( 'bp-uploader-warning', message );
 			uploader.refresh();
 		} );
+
+		/**
+		 * If uploader is initialized within a Thickbox modal, we need to
+		 * re-initialize the "browse_button" shim for proper placement.
+		 *
+		 * @param {plupload.Uploader} uploader Uploader instance.
+		 */
+		this.uploader.bind( 'PostInit', function( uploader ) {
+			if ( $('body').hasClass('wp-admin') ) {
+				$('body').on( 'click', '.thickbox', function(e) {
+					setTimeout( function() {
+						uploader.refresh();
+					}, 200 );
+				} );
+			}
+		} );
 	};
 
 	// Create a very generic Model for files
Index: src/bp-core/js/webcam.js
===================================================================
--- src/bp-core/js/webcam.js
+++ src/bp-core/js/webcam.js
@@ -89,6 +89,8 @@
 			} else if ( navigator.mozGetUserMedia ) {
 				video.src = stream;
 				video.play();
+			} else if ( video.srcObject !== undefined ) {
+				video.srcObject = stream;
 			} else if ( window.URL ) {
 				video.src = window.URL.createObjectURL( stream );
 			} else {
@@ -212,7 +214,7 @@
 			bp.WebCam.displayWarning( 'requesting' );
 
 			if ( navigator.getUserMedia ) {
-				navigator.getUserMedia( { video:true }, bp.WebCam.gotStream, bp.WebCams.noStream );
+				navigator.getUserMedia( { video:true }, bp.WebCam.gotStream, bp.WebCam.noStream );
 			}  else if ( navigator.oGetUserMedia ) {
 				navigator.oGetUserMedia( { video:true }, bp.WebCam.gotStream, bp.WebCam.noStream );
 			} else if ( navigator.mozGetUserMedia ) {
