Index: _source/plugins/scayt/plugin.js
===================================================================
--- _source/plugins/scayt/plugin.js	(revision 6193)
+++ _source/plugins/scayt/plugin.js	(revision )
@@ -595,6 +595,7 @@
 						label : lang.title,
 						title : CKEDITOR.env.opera ? lang.opera_title : lang.title,
 						className : 'cke_button_scayt',
+						modes : { wysiwyg : 1 },
 						onRender: function()
 						{
 							command.on( 'state', function()
Index: _source/plugins/button/plugin.js
===================================================================
--- _source/plugins/button/plugin.js	(revision 6178)
+++ _source/plugins/button/plugin.js	(revision )
@@ -137,11 +137,22 @@
 
 		instance.index = index = CKEDITOR.ui.button._.instances.push( instance ) - 1;
 
+		// Indicate a mode sensitive button.
 		if ( this.modes )
 		{
+			var modeStates = {};
+
+			editor.on( 'beforeModeUnload', function()
+				{
+					modeStates[ editor.mode ] = this._.state;
+				}, this );
+
 			editor.on( 'mode', function()
 				{
-					this.setState( this.modes[ editor.mode ] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );
+					var mode = editor.mode;
+
+					// Restore saved button state.
+					this.setState( this.modes[ mode ] ? modeStates[ mode ] != undefined ? modeStates[ mode ] : CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );
 				}, this);
 		}
 		else if ( command )
