Index: wp-admin/js/widgets.dev.js
===================================================================
--- wp-admin/js/widgets.dev.js	(revision 21483)
+++ wp-admin/js/widgets.dev.js	(working copy)
@@ -172,6 +172,40 @@
 				$('#removing-widget').hide().children('span').html('');
 			}
 		});
+
+		$( window ).scroll( function () {
+			if ( wpWidgets.sidebarTimeout ) clearTimeout( wpWidgets.sidebarTimeout );
+
+			wpWidgets.sidebarTimeout = setTimeout( function () {
+				// Don't try and be helpful when the user is dragging something.
+				if ( $( '.ui-draggable-dragging' ).length > 0 ) return;
+
+				var sidebar = $( '#widgets-right' );
+				var relativeScroll = $( window ).scrollTop() - ( sidebar.parent().offset().top - $( '#wpadminbar' ).height() );
+
+				if ( relativeScroll > 0 ) {
+					var currentMarginTop = parseInt( sidebar.css( 'marginTop' ), 10 );
+
+					if ( relativeScroll < currentMarginTop ) {
+						sidebar.stop().animate( { marginTop : relativeScroll } );
+					}
+					else {
+						var windowHeight = $( window ).height();
+						var sidebarHeight = sidebar.height();
+
+						if ( windowHeight > sidebarHeight ) {
+							sidebar.stop().animate( { marginTop : relativeScroll } );
+						}
+						else if ( windowHeight + relativeScroll - sidebarHeight + currentMarginTop > 0 ) {
+							sidebar.stop().animate( { marginTop : windowHeight + relativeScroll - sidebarHeight } );
+						}
+					}
+				}
+				else {
+					sidebar.stop().animate( { marginTop : 0 } );
+				}
+			}, 250 );
+		} );
 	},
 
 	saveOrder : function(sb) {
