Index: /CKEditor/trunk/CHANGES.html
===================================================================
--- /CKEditor/trunk/CHANGES.html	(revision 5484)
+++ /CKEditor/trunk/CHANGES.html	(revision 5485)
@@ -88,4 +88,5 @@
 		<li><a href="http://dev.fckeditor.net/ticket/5461">#5461</a> : [IE] Fix Paste from Word dialog doesn't accept imput problem.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/5573">#5573</a> : SCAYT move cursor position after insert element into marked word text.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/5546">#5546</a> : SCAYT interferes with undo/redo commands.</li>
 		<li>Updated the following language files:<ul>
 			<li><a href="http://dev.fckeditor.net/ticket/5432">#5432</a> : Dutch;</li>
Index: /CKEditor/trunk/_source/plugins/scayt/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/scayt/plugin.js	(revision 5484)
+++ /CKEditor/trunk/_source/plugins/scayt/plugin.js	(revision 5485)
@@ -143,4 +143,13 @@
 			});
 
+		editor.on( 'afterCommandExec', function( ev )
+			{
+				if ( !plugin.isScaytEnabled( editor ) )
+					return;
+
+				if ( editor.mode == 'wysiwyg' && ( ev.data.name == 'undo' || ev.data.name == 'redo' ) )
+					window.setTimeout( function() { plugin.getScayt( editor ).refresh(); }, 10 );
+			});
+
 		editor.on( 'destroy', function( ev )
 			{
@@ -231,4 +240,28 @@
 		}
 
+		// Override Image.equals method avoid CK snapshot module to add SCAYT markup to snapshots. (#5546)
+		var undoImagePrototype = CKEDITOR.plugins.undo.Image.prototype;
+		undoImagePrototype.equals =	 CKEDITOR.tools.override( undoImagePrototype.equals, function( org )
+		{
+			return function( otherImage )
+			{
+				var thisContents = this.contents,
+					otherContents = otherImage.contents;
+				var scayt_instance = plugin.getScayt( this.editor );
+				// Making the comparison based on content without SCAYT word markers.
+				if ( scayt_instance && plugin.isScaytReady( this.editor ) )
+				{
+					this.contents = scayt_instance.reset( thisContents );
+					otherImage.contents = scayt_instance.reset( otherContents );
+				}
+				
+				var retval = org.apply( this, arguments );
+
+				this.contents = thisContents;
+				otherImage.contents = otherContents;
+				return retval;
+			}
+		});
+		
 		if ( editor.document )
 			createInstance();
