Index: /CKEditor/branches/features/v4-paste/_source/plugins/htmldataprocessor/plugin.js
===================================================================
--- /CKEditor/branches/features/v4-paste/_source/plugins/htmldataprocessor/plugin.js	(revision 7161)
+++ /CKEditor/branches/features/v4-paste/_source/plugins/htmldataprocessor/plugin.js	(revision 7162)
@@ -67,4 +67,7 @@
 		return function( node )
 		{
+			if ( node.attributes.contenteditable == 'false' )
+				return;
+
 			trimFillers( node, !isOutput );
 
Index: /CKEditor/branches/features/v4-paste/_source/plugins/pagebreak/plugin.js
===================================================================
--- /CKEditor/branches/features/v4-paste/_source/plugins/pagebreak/plugin.js	(revision 7161)
+++ /CKEditor/branches/features/v4-paste/_source/plugins/pagebreak/plugin.js	(revision 7162)
@@ -1,3 +1,3 @@
-﻿/*
+﻿﻿/*
 Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
@@ -64,22 +64,21 @@
 			htmlFilter.addRules(
 			{
-				attributes : {
-					'class' : function( value, element )
+				elements :
+				{
+					'div' : function( element )
 					{
-						var className =  value.replace( 'cke_pagebreak', '' );
-						if ( className != value )
+						var className =  element.attributes[ 'class' ];
+						if ( className && className.indexOf( 'cke_pagebreak' ) != -1 )
 						{
-							var span = CKEDITOR.htmlParser.fragment.fromHtml( '<span style="display: none;">&nbsp;</span>' );
-							element.children.length = 0;
-							element.add( span );
 							var attrs = element.attributes;
+							delete attrs[ 'class' ];
 							delete attrs[ 'aria-label' ];
 							delete attrs.contenteditable;
 							delete attrs.title;
+							element.children.length = 0;
 						}
-						return className;
 					}
 				}
-			}, 5 );
+			}, 20 );
 		}
 
@@ -97,17 +96,21 @@
 								childStyle = child && ( child.name == 'span' ) && child.attributes.style;
 
-							if ( childStyle && ( /page-break-after\s*:\s*always/i ).test( style ) && ( /display\s*:\s*none/i ).test( childStyle ) )
+							if ( /page-break-after\s*:\s*always/i.test( style ) )
 							{
-								attributes.contenteditable = "false";
-								attributes[ 'class' ] = "cke_pagebreak";
-								attributes[ 'data-cke-display-name' ] = "pagebreak";
-								attributes[ 'aria-label' ] = label;
-								attributes[ 'title' ] = label;
-
-								element.children.length = 0;
+								if ( !element.children.length
+										// Back-compat.
+										|| childStyle && /display\s*:\s*none/i .test( childStyle ) )
+								{
+									attributes.contenteditable = "false";
+									attributes[ 'class' ] = "cke_pagebreak";
+									attributes[ 'data-cke-display-name' ] = "pagebreak";
+									attributes[ 'aria-label' ] = label;
+									attributes[ 'title' ] = label;
+									element.children.length = 0;
+								}
 							}
 						}
 					}
-				});
+				}, 5 );
 		}
 	},
Index: /CKEditor/branches/features/v4-paste/_source/plugins/wysiwygarea/plugin.js
===================================================================
--- /CKEditor/branches/features/v4-paste/_source/plugins/wysiwygarea/plugin.js	(revision 7161)
+++ /CKEditor/branches/features/v4-paste/_source/plugins/wysiwygarea/plugin.js	(revision 7162)
@@ -414,6 +414,8 @@
 			// 2. It doesn't end with one inner block; (#7467)
 			// 3. It doesn't have bogus br yet.
+			// 4. It's an editable block.
 			if ( pathBlock
 					&& pathBlock.isBlockBoundary()
+					&& !pathBlock.isReadOnly()
 					&& !( lastNode && lastNode.type == CKEDITOR.NODE_ELEMENT && lastNode.isBlockBoundary() )
 					&& !pathBlock.is( 'pre' )
