Index: src/wp-includes/js/mce-view.js
===================================================================
--- src/wp-includes/js/mce-view.js	(revision 29608)
+++ src/wp-includes/js/mce-view.js	(working copy)
@@ -124,15 +124,34 @@
 		},
 		/* jshint scripturl: true */
 		setIframes: function ( html ) {
-			var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
+			var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver,
+				importStyles = this.type === 'video' || this.type === 'audio' || this.type === 'playlist';
 
 			if ( html.indexOf( '<script' ) !== -1 ) {
 				this.getNodes( function ( editor, node, content ) {
 					var dom = editor.dom,
+						styles = '',
+						bodyClasses = editor.getBody().className || '',
 						iframe, iframeDoc, i, resize;
 
 					content.innerHTML = '';
 
+					if ( importStyles ) {
+						if ( ! wp.mce.views.sandboxStyles ) {
+							tinymce.each( dom.$( 'link[rel="stylesheet"]', editor.getDoc().head ), function( link ) {
+								if ( link.href && link.href.indexOf( 'skins/lightgray/content.min.css' ) === -1 &&
+									link.href.indexOf( 'skins/wordpress/wp-content.css' ) === -1 ) {
+
+									styles += dom.getOuterHTML( link ) + '\n';
+								}
+							});
+
+							wp.mce.views.sandboxStyles = styles;
+						} else {
+							styles = wp.mce.views.sandboxStyles;
+						}
+					}
+
 					// Seems Firefox needs a bit of time to insert/set the view nodes, or the iframe will fail
 					// especially when switching Text => Visual.
 					setTimeout( function() {
@@ -156,6 +175,7 @@
 							'<html>' +
 								'<head>' +
 									'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />' +
+									styles +
 									'<style>' +
 										'html {' +
 											'background: transparent;' +
@@ -164,12 +184,16 @@
 										'}' +
 										'body#wpview-iframe-sandbox {' +
 											'background: transparent;' +
-											'padding: 1px 0;' +
-											'margin: -1px 0 0;' +
+											'padding: 1px 0 !important;' +
+											'margin: -1px 0 0 !important;' +
 										'}' +
+										'body#wpview-iframe-sandbox:before, body#wpview-iframe-sandbox:after {' +
+											'display: none;' +
+											'content: "";' +
+										'}' +
 									'</style>' +
 								'</head>' +
-								'<body id="wpview-iframe-sandbox">' +
+								'<body id="wpview-iframe-sandbox" class="' + bodyClasses + '">' +
 									html +
 								'</body>' +
 							'</html>'
@@ -195,6 +219,12 @@
 								setTimeout( resize, i * 700 );
 							}
 						}
+
+						if ( importStyles ) {
+							editor.on( 'wp-body-class-change', function() {
+								iframeDoc.body.className = editor.getBody().className;
+							});
+						}
 					}, 50 );
 				});
 			} else {
Index: src/wp-includes/js/mediaelement/wp-mediaelement.css
===================================================================
--- src/wp-includes/js/mediaelement/wp-mediaelement.css	(revision 29608)
+++ src/wp-includes/js/mediaelement/wp-mediaelement.css	(working copy)
@@ -1,10 +1,3 @@
-#wpview-iframe-sandbox {
-	color: #444;
-	font-family: "Open Sans", sans-serif;
-	font-size: 13px;
-	line-height: 1.4em;
-}
-
 .mejs-container {
 	clear: both;
 }
@@ -278,4 +271,4 @@
 
 .wp-audio-playlist .me-cannotplay span {
 	padding: 5px 15px;
-}
\ No newline at end of file
+}
Index: src/wp-includes/js/tinymce/plugins/wpview/plugin.js
===================================================================
--- src/wp-includes/js/tinymce/plugins/wpview/plugin.js	(revision 29608)
+++ src/wp-includes/js/tinymce/plugins/wpview/plugin.js	(working copy)
@@ -260,7 +260,8 @@
 
 	editor.on( 'init', function() {
 		var scrolled = false,
-			selection = editor.selection;
+			selection = editor.selection,
+			MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
 
 		// When a view is selected, ensure content that is being pasted
 		// or inserted is added to a text node (instead of the view).
@@ -333,6 +334,16 @@
 				scrolled = false;
 			}
 		}, true );
+
+		if ( MutationObserver ) {
+			new MutationObserver( function() {
+				editor.fire( 'wp-body-class-change' );
+			} )
+			.observe( editor.getBody(), {
+				attributes: true,
+				attributeFilter: ['class']
+			} );
+		}
 	});
 
 	editor.on( 'PreProcess', function( event ) {
Index: src/wp-includes/media.php
===================================================================
--- src/wp-includes/media.php	(revision 29608)
+++ src/wp-includes/media.php	(working copy)
@@ -3310,19 +3310,8 @@
  */
 function wpview_media_sandbox_styles() {
  	$version = 'ver=' . $GLOBALS['wp_version'];
-	$open_sans = "//fonts.googleapis.com/css?family=Open+Sans%3A300italic%2C400italic%2C600italic%2C300%2C400%2C600&subset=latin%2Clatin-ext&ver=$version";
-	$dashicons = includes_url( "css/dashicons.css?$version" );
  	$mediaelement = includes_url( "js/mediaelement/mediaelementplayer.min.css?$version" );
  	$wpmediaelement = includes_url( "js/mediaelement/wp-mediaelement.css?$version" );
 
-	/**
-	 * For use by themes that need to override the styling of MediaElement based previews in the Visual editor.
-	 * Not intended for adding editor-style.css. Ideally these styles will be applied by using
-	 * the 'seamless' iframe attribute in the future.
-	 *
-	 * @since 4.0
-	 *
-	 * @param array The URLs to the stylesheets that will be loaded in the sandbox iframe.
-	 */
-	return apply_filters( 'wpview_media_sandbox_styles', array( $open_sans, $dashicons, $mediaelement, $wpmediaelement ) );
+	return array( $mediaelement, $wpmediaelement );
 }
