Index: src/wp-includes/js/mce-view.js
===================================================================
--- src/wp-includes/js/mce-view.js	(revision 32508)
+++ src/wp-includes/js/mce-view.js	(working copy)
@@ -93,8 +93,7 @@
 		setMarkers: function( content ) {
 			var pieces = [ { content: content } ],
 				self = this,
-				instance,
-				current;
+				instance, current;
 
 			_.each( views, function( view, type ) {
 				current = pieces.slice();
@@ -138,7 +137,8 @@
 				} );
 			} );
 
-			return _.pluck( pieces, 'content' ).join( '' );
+			content = _.pluck( pieces, 'content' ).join( '' );
+			return content.replace( /<p>\s*<p data-wpview-marker=/g, '<p data-wpview-marker=' ).replace( /<\/p>\s*<\/p>/g, '</p>' );
 		},
 
 		/**
@@ -416,7 +416,7 @@
 		 */
 		replaceMarkers: function() {
 			this.getMarkers( function( editor, node ) {
-				if ( $( node ).text() !== this.text ) {
+				if ( ! this.shortcode && $( node ).html() !== this.text ) {
 					editor.dom.setAttrib( node, 'data-wpview-marker', null );
 					return;
 				}
Index: src/wp-includes/js/media-audiovideo.js
===================================================================
--- src/wp-includes/js/media-audiovideo.js	(revision 32508)
+++ src/wp-includes/js/media-audiovideo.js	(working copy)
@@ -704,7 +704,7 @@
 
 			if ( -1 === content.indexOf( attachment.get( 'url' ) ) ) {
 				content += [
-					'<track srclang="en" label="English"kind="subtitles" src="',
+					'<track srclang="en" label="English" kind="subtitles" src="',
 					attachment.get( 'url' ),
 					'" />'
 				].join('');
Index: src/wp-includes/js/media/views/frame/video-details.js
===================================================================
--- src/wp-includes/js/media/views/frame/video-details.js	(revision 32508)
+++ src/wp-includes/js/media/views/frame/video-details.js	(working copy)
@@ -120,7 +120,7 @@
 
 			if ( -1 === content.indexOf( attachment.get( 'url' ) ) ) {
 				content += [
-					'<track srclang="en" label="English"kind="subtitles" src="',
+					'<track srclang="en" label="English" kind="subtitles" src="',
 					attachment.get( 'url' ),
 					'" />'
 				].join('');
Index: src/wp-includes/js/tinymce/plugins/wpview/plugin.js
===================================================================
--- src/wp-includes/js/tinymce/plugins/wpview/plugin.js	(revision 32508)
+++ src/wp-includes/js/tinymce/plugins/wpview/plugin.js	(working copy)
@@ -348,33 +348,29 @@
 		}
 	});
 
-	function resetViews( rootNode ) {
-		// Replace view nodes
-		$( 'div[data-wpview-text]', rootNode ).each( function( i, node ) {
-			var $node = $( node ),
-				text = window.decodeURIComponent( $node.attr( 'data-wpview-text' ) || '' );
-
-			if ( text && node.parentNode ) {
-				$node.replaceWith( $( editor.dom.create('p') ).text( text ) );
-			}
+	editor.on( 'PreProcess', function( event ) {
+		// Empty the wpview wrap and marker nodes
+		$( 'div[data-wpview-text], p[data-wpview-marker]', event.node ).each( function( i, node ) {
+			node.innerHTML = ',';
 		});
-
-		// Remove marker attributes
-		$( 'p[data-wpview-marker]', rootNode ).attr( 'data-wpview-marker', null );
-	}
-
-	editor.on( 'PreProcess', function( event ) {
-		// Replace the view nodes with their text in the DOM clone.
-		resetViews( event.node );
 	}, true );
 
 	editor.on( 'hide', function() {
-		// Replace the view nodes with their text directly in the editor body.
 		wp.mce.views.unbind();
 		deselect();
-		resetViews( editor.getBody() );
 	});
 
+	function resetViewsCallback( match, viewText ) {
+		return '<p>' + window.decodeURIComponent( viewText ) + '</p>';
+	}
+
+	editor.on( 'PostProcess', function( event ) {
+		if ( event.content ) {
+			event.content = event.content.replace( /<div [^>]*?data-wpview-text="([^"]+)"[^>]*>[\s\S]*?<\/div>/g, resetViewsCallback )
+				.replace( /<p [^>]*?data-wpview-marker="([^"]+)"[^>]*>[\s\S]*?<\/p>/g, resetViewsCallback );
+		}
+	});
+
 	// Excludes arrow keys, delete, backspace, enter, space bar.
 	// Ref: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.keyCode
 	function isSpecialKey( key ) {
