Index: /CKEditor/trunk/CHANGES.html
===================================================================
--- /CKEditor/trunk/CHANGES.html	(revision 5007)
+++ /CKEditor/trunk/CHANGES.html	(revision 5008)
@@ -70,4 +70,5 @@
 		<li><a href="http://dev.fckeditor.net/ticket/4647">#4647</a> : [IE] Selection on an element within positioned container is lost after open context-menu then click one menu item.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/4683">#4683</a> : Double-quote character in attribute values is not escaped in editor output.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/4762">#4762</a> : [IE] Unexpected vertical-scrolling behavior happens whenever focus is moving out of editor in source mode.</li>
 		<li>Updated the following language files:<ul>
 			<li><a href="http://dev.fckeditor.net/ticket/5006">#5006</a> : Dutch;</li>
Index: /CKEditor/trunk/_source/plugins/sourcearea/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/sourcearea/plugin.js	(revision 5007)
+++ /CKEditor/trunk/_source/plugins/sourcearea/plugin.js	(revision 5008)
@@ -15,5 +15,6 @@
 	init : function( editor )
 	{
-		var sourcearea = CKEDITOR.plugins.sourcearea;
+		var sourcearea = CKEDITOR.plugins.sourcearea,
+			win = CKEDITOR.document.getWindow();
 
 		editor.on( 'editingBlockReady', function()
@@ -49,27 +50,24 @@
 							};
 
-							// The textarea height/width='100%' doesn't
-							// constraint to the 'td' in IE strick mode
+							// Having to make <textarea> fixed sized to conque the following bugs:
+							// 1. The textarea height/width='100%' doesn't constraint to the 'td' in IE6/7.
+							// 2. Unexpected vertical-scrolling behavior happens whenever focus is moving out of editor
+							// if text content within it has overflowed. (#4762)
 							if ( CKEDITOR.env.ie )
 							{
-								if ( !CKEDITOR.env.ie8Compat )
-								{
-									onResize = function()
-										{
-											// Holder rectange size is stretched by textarea,
-											// so hide it just for a moment.
-											textarea.hide();
-											textarea.setStyle( 'height', holderElement.$.clientHeight + 'px' );
-											// When we have proper holder size, show textarea again.
-											textarea.show();
-										};
-									editor.on( 'resize', onResize );
-									editor.on( 'afterCommandExec', function( event )
-									{
-										if ( event.data.name == 'toolbarCollapse' )
-											onResize();
-									});
-									styles.height = holderElement.$.clientHeight + 'px';
-								}
+								onResize = function()
+								{
+									// Holder rectange size is stretched by textarea,
+									// so hide it just for a moment.
+									textarea.hide();
+									textarea.setStyle( 'height', holderElement.$.clientHeight + 'px' );
+									textarea.setStyle( 'width', holderElement.$.clientWidth + 'px' );
+									// When we have proper holder size, show textarea again.
+									textarea.show();
+								};
+
+								editor.on( 'resize', onResize );
+								win.on( 'resize', onResize );
+								setTimeout( onResize, 0 );
 							}
 							else
@@ -140,5 +138,8 @@
 
 							if ( onResize )
+							{
 								editor.removeListener( 'resize', onResize );
+								win.removeListener( 'resize', onResize );
+							}
 
 							if ( CKEDITOR.env.ie && CKEDITOR.env.version < 8 )
Index: /CKEditor/trunk/_source/plugins/toolbar/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/toolbar/plugin.js	(revision 5007)
+++ /CKEditor/trunk/_source/plugins/toolbar/plugin.js	(revision 5008)
@@ -264,4 +264,6 @@
 										var dy = toolboxContainer.$.offsetHeight - previousHeight;
 										contents.setStyle( 'height', ( contentHeight - dy ) + 'px' );
+
+										editor.fire( 'resize' );
 									},
 
