Index: /CKEditor/trunk/CHANGES.html
===================================================================
--- /CKEditor/trunk/CHANGES.html	(revision 5459)
+++ /CKEditor/trunk/CHANGES.html	(revision 5460)
@@ -75,4 +75,5 @@
 		<li><a href="http://dev.fckeditor.net/ticket/3257">#3257</a> : Create list doesn't keep blocks as headings.</li>
 		<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>
 	</ul>
 	<h3>
Index: /CKEditor/trunk/_source/plugins/removeformat/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/removeformat/plugin.js	(revision 5459)
+++ /CKEditor/trunk/_source/plugins/removeformat/plugin.js	(revision 5460)
@@ -16,4 +16,6 @@
 				command : 'removeFormat'
 			});
+
+		editor._.removeFormat = { filters: [] };
 	}
 });
@@ -33,4 +35,5 @@
 					( editor._.removeAttributes = editor.config.removeFormatAttributes.split( ',' ) );
 
+				var filter = CKEDITOR.plugins.removeformat.filter;
 				var ranges = editor.getSelection().getRanges();
 
@@ -71,5 +74,5 @@
 
 							// If this element can be removed (even partially).
-							if ( tagsRegex.test( pathElement.getName() ) )
+							if ( tagsRegex.test( pathElement.getName() ) && filter( editor, pathElement ) )
 								node.breakParent( pathElement );
 						}
@@ -93,5 +96,7 @@
 
 						// This node must not be a fake element.
-						if ( !( currentNode.getName() == 'img' && currentNode.getAttribute( '_cke_realelement' ) ) )
+						if ( !( currentNode.getName() == 'img'
+							&& currentNode.getAttribute( '_cke_realelement' ) )
+							&& filter( editor, currentNode ) )
 						{
 							// Remove elements nodes that match with this style rules.
@@ -111,5 +116,40 @@
 			}
 		}
+	},
+
+	/**
+	 * Perform the remove format filters on the passed element.
+	 * @param {CKEDITOR.editor} editor
+	 * @param {CKEDITOR.dom.element} element
+	 */
+	filter : function ( editor, element )
+	{
+		var filters = editor._.removeFormat.filters;
+		for ( var i = 0; i < filters.length; i++ )
+		{
+			if ( filters[ i ]( element ) === false )
+				return false;
+		}
+		return true;
 	}
+};
+
+/**
+ * Add to a collection of functions to decide whether a specific
+ * element should be considered as formatting element and thus
+ * could be removed during <b>removeFormat</b> command,
+ * Note: Only available with the existence of 'removeformat' plugin.
+ * @since 3.3
+ * @param {Function} func The function to be called, which will be passed a {CKEDITOR.dom.element} element to test.
+ * @example
+ *  // Don't remove empty span
+ *  editor.addRemoveFormatFilter.push( function( element )
+ *		{
+ *			return !( element.is( 'span' ) && CKEDITOR.tools.isEmpty( element.getAttributes() ) );
+ *		});
+ */
+CKEDITOR.editor.prototype.addRemoveFormatFilter = function( func )
+{
+	this._.removeFormat.filters.push( func );
 };
 
Index: /CKEditor/trunk/_source/plugins/scayt/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/scayt/plugin.js	(revision 5459)
+++ /CKEditor/trunk/_source/plugins/scayt/plugin.js	(revision 5460)
@@ -645,14 +645,16 @@
 		afterInit : function( editor )
 		{
-			// Prevent word marker line from displaying in elements path. (#3570)
-			var elementsPathFilters;
+			// Prevent word marker line from displaying in elements path and been removed when cleaning format. (#3570) (#4125)
+			var elementsPathFilters,
+					scaytFilter = function( element )
+					{
+						if ( element.hasAttribute( 'scaytid' ) )
+							return false;
+					};
+
 			if ( editor._.elementsPath && ( elementsPathFilters = editor._.elementsPath.filters ) )
-			{
-				elementsPathFilters.push( function( element )
-				{
-					if ( element.hasAttribute( 'scaytid' ) )
-						return false;
-				} );
-			}
+				elementsPathFilters.push( scaytFilter );
+
+			editor.addRemoveFormatFilter && editor.addRemoveFormatFilter( scaytFilter );
 
 		}
