Index: src/wp-admin/css/edit.css
===================================================================
--- src/wp-admin/css/edit.css	(revision 39286)
+++ src/wp-admin/css/edit.css	(working copy)
@@ -391,6 +391,19 @@
 	z-index: 999;
 }
 
+.wp-editor-expand .wp-editor-tools {
+	position: sticky;
+	position: -webkit-sticky;
+	top: 32px;
+}
+
+.wp-editor-expand div.mce-toolbar-grp,
+.wp-editor-expand .quicktags-toolbar {
+	position: sticky;
+	position: -webkit-sticky;
+	top: 87px; /* admin bar height + tools height */
+}
+
 /* TinyMCE native fullscreen mode override */
 .mce-fullscreen #wp-content-wrap .mce-menubar,
 .mce-fullscreen #wp-content-wrap .mce-toolbar-grp,
Index: src/wp-admin/js/editor-expand.js
===================================================================
--- src/wp-admin/js/editor-expand.js	(revision 39286)
+++ src/wp-admin/js/editor-expand.js	(working copy)
@@ -6,6 +6,15 @@
 		$adminBar = $( '#wpadminbar' ),
 		$footer = $( '#wpfooter' );
 
+	var featureSticky = ( function() {
+		var element = document.createElement( 'div' );
+		var style = element.style;
+
+		style.cssText = 'position:sticky;position:-webkit-sticky';
+
+		return !! style.position;
+	} )();
+
 	/* Autoresize editor. */
 	$( function() {
 		var $wrap = $( '#postdivrich' ),
@@ -333,6 +342,7 @@
 
 			if ( ! canPin ) {
 				if ( resize ) {
+					if ( ! featureSticky ) {
 					$tools.css( {
 						position: 'absolute',
 						top: 0,
@@ -352,6 +362,7 @@
 						top: heights.menuBarHeight,
 						width: contentWrapWidth - ( borderWidth * 2 ) - ( visual ? 0 : ( $top.outerWidth() - $top.width() ) )
 					} );
+					}
 
 					$statusBar.attr( 'style', advanced ? '' : 'visibility: hidden;' );
 					$bottom.attr( 'style', '' );
@@ -365,6 +376,7 @@
 					windowPos <= ( topPos - heights.toolsHeight - heights.adminBarHeight + editorHeight - buffer ) ) ) {
 					fixedTop = true;
 
+					if ( ! featureSticky ) {
 					$tools.css( {
 						position: 'fixed',
 						top: heights.adminBarHeight,
@@ -384,12 +396,14 @@
 						top: heights.adminBarHeight + heights.toolsHeight + heights.menuBarHeight,
 						width: contentWrapWidth - ( borderWidth * 2 ) - ( visual ? 0 : ( $top.outerWidth() - $top.width() ) )
 					} );
+					}
 				// Maybe unpin the top.
 				} else if ( fixedTop || resize ) {
 					// Handle scrolling up.
 					if ( windowPos <= ( topPos - heights.toolsHeight - heights.adminBarHeight ) ) {
 						fixedTop = false;
 
+						if ( ! featureSticky ) {
 						$tools.css( {
 							position: 'absolute',
 							top: 0,
@@ -409,10 +423,12 @@
 							top: heights.menuBarHeight,
 							width: contentWrapWidth - ( borderWidth * 2 ) - ( visual ? 0 : ( $top.outerWidth() - $top.width() ) )
 						} );
+						}
 					// Handle scrolling down.
 					} else if ( windowPos >= ( topPos - heights.toolsHeight - heights.adminBarHeight + editorHeight - buffer ) ) {
 						fixedTop = false;
 
+						if ( ! featureSticky ) {
 						$tools.css( {
 							position: 'absolute',
 							top: editorHeight - buffer,
@@ -432,6 +448,7 @@
 							top: editorHeight - buffer + heights.menuBarHeight,
 							width: contentWrapWidth - ( borderWidth * 2 ) - ( visual ? 0 : ( $top.outerWidth() - $top.width() ) )
 						} );
+						}
 					}
 				}
 
@@ -558,7 +575,7 @@
 				fixedSideTop = fixedSideBottom = false;
 			}
 
-			if ( resize ) {
+			if ( resize && ! featureSticky ) {
 				$contentWrap.css( {
 					paddingTop: heights.toolsHeight
 				} );
