Index: src/wp-admin/js/editor-expand.js
===================================================================
--- src/wp-admin/js/editor-expand.js	(revision 29673)
+++ src/wp-admin/js/editor-expand.js	(working copy)
@@ -223,15 +223,33 @@
 		}
 
 		function mceHide() {
-			var wrapHeight = $( '#wpwrap' ).height();
-
 			textEditorResize();
 
-			if ( wrapHeight && $window.scrollTop() > wrapHeight ) {
-				window.scrollTo( window.pageXOffset, wrapHeight - 1 );
-			}
+			window.setTimeout( function() {
+				var wrapHeight = $( '#wpwrap' ).height(),
+					windowPos = $window.scrollTop(),
+					iframeHeight = $('#content_ifr').height(),
+					textareaHeight = $textEditor.height(),
+					scroll, topPos;
 
-			adjust();
+				if ( iframeHeight > textareaHeight && ( windowPos + heights.windowHeight ) > ( textareaHeight + $textEditor.offset().top ) ) {
+					scroll = iframeHeight - textareaHeight - 1;
+					topPos = $textEditor.parent().offset().top - heights.toolsHeight - heights.adminBarHeight;
+
+					if ( windowPos - scroll < topPos ) {
+						window.scrollTo( window.pageXOffset, topPos );
+					} else {
+						window.scrollBy( 0, -scroll );
+					}
+
+					adjust();
+					window.scrollBy( 0, 1 );
+				} else if ( wrapHeight && windowPos > wrapHeight ) {
+					window.scrollTo( window.pageXOffset, wrapHeight - 1 );
+				}
+
+				adjust();
+			}, 200 );
 		}
 
 		mceBind = function() {
