Index: wp-admin/js/common.dev.js
===================================================================
--- wp-admin/js/common.dev.js	(revision 11473)
+++ wp-admin/js/common.dev.js	(working copy)
@@ -26,9 +26,8 @@
 
 		if ( $('body').hasClass('folded') ) {
 			this.fold();
-		} else {
-			this.restoreMenuState();
 		}
+		this.restoreMenuState();
 	},
 
 	restoreMenuState : function() {
@@ -61,10 +60,15 @@
 			$('body').addClass('folded');
 			$('#adminmenu li.wp-has-submenu').hoverIntent({
 				over: function(e){
-					var m = $(this).find('.wp-submenu'), t = e.clientY, H = $(window).height(), h = m.height(), o;
-
-					if ( (t+h+10) > H ) {
-						o = (t+h+10) - H;
+					var m = $(this).find('.wp-submenu');
+					var b = m.parent().offset().top + m.height() + 1; // Bottom offset of the menu
+					var h = $('#wpwrap').height(); // Height of the entire page
+					var o = 60 + b - h;
+					var f = $(window).height() + $('body').scrollTop() - 15; // The fold
+					if (f < (b - o)) {
+						o = b - f;
+					}
+					if (o > 1) {
 						m.css({'marginTop':'-'+o+'px'});
 					} else if ( m.css('marginTop') ) {
 						m.css({'marginTop':''});
