Index: /CKEditor/trunk/CHANGES.html
===================================================================
--- /CKEditor/trunk/CHANGES.html	(revision 5460)
+++ /CKEditor/trunk/CHANGES.html	(revision 5461)
@@ -76,4 +76,5 @@
 		<li><a href="http://dev.fckeditor.net/ticket/5111">#5111</a> : [Firefox] JAWS doesn't respect PC cursor mode (application role) on toolbar.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/4125">#4125</a> : Remove Format command incorrectly removes SCAYT word markers.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5530">#5530</a> : Page break for printing can't be removed with undo.</li>
 	</ul>
 	<h3>
Index: /CKEditor/trunk/_source/plugins/pagebreak/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/pagebreak/plugin.js	(revision 5460)
+++ /CKEditor/trunk/_source/plugins/pagebreak/plugin.js	(revision 5461)
@@ -85,4 +85,6 @@
 		var ranges = editor.getSelection().getRanges();
 
+		editor.fire( 'saveSnapshot' );
+
 		for ( var range, i = 0 ; i < ranges.length ; i++ )
 		{
@@ -100,4 +102,6 @@
 			}
 		}
+
+		editor.fire( 'saveSnapshot' );
 	}
 };
Index: /CKEditor/trunk/_source/plugins/undo/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/undo/plugin.js	(revision 5460)
+++ /CKEditor/trunk/_source/plugins/undo/plugin.js	(revision 5461)
@@ -115,4 +115,25 @@
 				editor.fire( 'saveSnapshot' );
 			};
+
+			/**
+			 * Update the undo stacks with any subsequent DOM changes after this call.
+			 * @name CKEDITOR.editor#updateUndo
+			 * @example
+			 * function()
+			 * {
+			 * editor.fire( 'updateSnapshot' );
+			 * ...
+			 *  // Ask to include subsequent (in this call stack) DOM changes to be
+			 * // considered as part of the first snapshot.
+			 * 	editor.fire( 'updateSnapshot' );
+			 * 	editor.document.body.append(...);
+			 * ...
+			 * }
+			 */
+			editor.on( 'updateSnapshot', function()
+			{
+				if ( undoManager.currentImage && new Image( editor ).equals( undoManager.currentImage ) )
+					setTimeout( function () { undoManager.update(); }, 0 );
+			});
 		}
 	});
@@ -398,6 +419,5 @@
 			// content, since actualy content may differ from
 			// the original snapshot due to dom change. (#4622)
-			this.snapshots.splice( this.index, 1, ( this.currentImage =  new Image( this.editor ) ) );
-
+			this.update();
 			this.fireChange();
 		},
@@ -498,4 +518,12 @@
 
 			return false;
+		},
+
+		/**
+		 * Update the last snapshot of the undo stack with the current editor content.
+		 */
+		update : function()
+		{
+			this.snapshots.splice( this.index, 1, ( this.currentImage = new Image( this.editor ) ) );
 		}
 	};
Index: /CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js	(revision 5460)
+++ /CKEditor/trunk/_source/plugins/wysiwygarea/plugin.js	(revision 5461)
@@ -192,4 +192,5 @@
 			 && !path.block )
 		{
+			editor.fire( 'updateSnapshot' );
 			restoreDirty( editor );
 			CKEDITOR.env.ie && restoreSelection( selection );
@@ -246,4 +247,5 @@
 		if ( walker.previous() )
 		{
+			editor.fire( 'updateSnapshot' );
 			restoreDirty( editor );
 			CKEDITOR.env.ie && restoreSelection( selection );
