Index: src/wp-admin/js/editor-expand.js
===================================================================
--- src/wp-admin/js/editor-expand.js	(revision 30976)
+++ src/wp-admin/js/editor-expand.js	(working copy)
@@ -31,6 +31,7 @@
 			fixedSideTop = false,
 			fixedSideBottom = false,
 			scrollTimer,
+			scrollRatio = 0,
 			lastScrollPosition = 0,
 			pageYOffsetAtTop = 130,
 			pinnedToolsTop = 56,
@@ -255,6 +256,11 @@
 				setTimeout( function() {
 					editor.execCommand( 'wpAutoResize' );
 					adjust();
+
+					if ( scrollRatio ) {
+						window.scrollTo( window.pageXOffset, $document.height() * scrollRatio );
+						scrollRatio = 0;
+					}
 				}, 300 );
 			}
 
@@ -270,6 +276,11 @@
 
 					textEditorResize();
 					adjust();
+
+					if ( scrollRatio ) {
+						window.scrollTo( window.pageXOffset, $document.height() * scrollRatio );
+						scrollRatio = 0;
+					}
 				}, 100 );
 
 				adjust();
@@ -622,6 +633,14 @@
 			scrollTimer = setTimeout( adjust, 100 );
 		}
 
+		function getScrollRatio() {
+			if ( lastScrollPosition ) {
+				scrollRatio = lastScrollPosition / $document.height();
+			} else {
+				scrollRatio = 0;
+			}
+		}
+
 		function on() {
 			// Scroll to the top when triggering this from JS.
 			// Ensures toolbars are pinned properly.
@@ -629,7 +648,7 @@
 				window.scrollTo( window.pageXOffset, 0 );
 			}
 
-			$wrap.addClass( 'wp-editor-expand' );
+			$wrap.addClass( 'wp-editor-expand' ).on( 'mousedown.editor-expand', '.wp-switch-editor', getScrollRatio );
 
 			// Adjust when the window is scrolled or resized.
 			$window.on( 'scroll.editor-expand resize.editor-expand', function( event ) {
@@ -690,7 +709,7 @@
 				window.scrollTo( window.pageXOffset, 0 );
 			}
 
-			$wrap.removeClass( 'wp-editor-expand' );
+			$wrap.removeClass( 'wp-editor-expand' ).off( 'mousedown.editor-expand' );
 
 			$window.off( '.editor-expand' );
 			$document.off( '.editor-expand' );
