Index: /CKEditor/trunk/_source/core/dom/element.js
===================================================================
--- /CKEditor/trunk/_source/core/dom/element.js	(revision 3625)
+++ /CKEditor/trunk/_source/core/dom/element.js	(revision 3626)
@@ -1099,12 +1099,27 @@
 		getDocumentPosition : function( refDocument )
 		{
-			var x = 0, y = 0, current = this, previous = null;
-			while ( current && !( current.getName() == 'body' || current.getName() == 'html' ) )
-			{
-				x += current.$.offsetLeft - current.$.scrollLeft;
-				y += current.$.offsetTop - current.$.scrollTop;
-
-				if ( !CKEDITOR.env.opera )
-				{
+			var x = 0, y = 0,
+				body = this.getDocument().getBody();
+
+			if ( document.documentElement[ "getBoundingClientRect" ] ) {
+				var box  = this.$.getBoundingClientRect(),
+					doc = this.getDocument().$,
+					docElem = doc.documentElement,
+					clientTop = docElem.clientTop || body.$.clientTop || 0,
+					clientLeft = docElem.clientLeft || body.$.clientLeft || 0;
+
+				x = box.left + ( !CKEDITOR.env.quirks && docElem.scrollLeft || body.$.scrollLeft );
+				x -= clientLeft;
+				y = box.top  + ( !CKEDITOR.env.quirks && docElem.scrollTop || body.$.scrollTop );
+				y -= clientTop;
+			}
+			else
+ 			{
+				var current = this, previous = null;
+				while ( current && !( current.getName() == 'body' || current.getName() == 'html' ) )
+				{
+					x += current.$.offsetLeft - current.$.scrollLeft;
+					y += current.$.offsetTop - current.$.scrollTop;
+
 					// Opera includes clientTop|Left into offsetTop|Left.
 					if ( !current.equals( this ) )
@@ -1121,13 +1136,13 @@
 						scrollElement = scrollElement.getParent();
 					}
+
+					previous = current;
+					current = new CKEDITOR.dom.element( current.$.offsetParent );
 				}
-
-				previous = current;
-				current = new CKEDITOR.dom.element( current.$.offsetParent );
 			}
 
 			if ( refDocument )
 			{
-				var currentWindow = current.getWindow(),
+				var currentWindow = this.getWindow(),
 					refWindow = refDocument.getWindow();
 
@@ -1141,27 +1156,12 @@
 			}
 
-			var body = this.getDocument().getBody();
-
-			// document.body is a special case when it comes to offsetTop and offsetLeft
-			// values.
-			// 1. It does not matter if we're in IE Quirks mode - in this case body is
-			// 	equal to the view pane itself.
-			// 2. It matters if document.body itself is a positioned element;
-			// 3. It matters when we're in IE Standards mode and the element has no
-			// 	positioned ancestor.
-			// Otherwise the values should be ignored.
-			if ( !( CKEDITOR.env.ie && CKEDITOR.env.quirks ) && ( body.getComputedStyle( 'position' ) != 'static' ||
-						( CKEDITOR.env.ie && !this.getPositionedAncestor() ) ) )
-			{
-				x += body.$.offsetLeft + ( body.$.clientLeft || 0 );
-				y += body.$.offsetTop + ( body.$.clientTop || 0 );
-			}
-
-			// In Firefox, we'll endup one pixel before the element positions,
-			// so we must add it here.
-			if ( CKEDITOR.env.gecko && !CKEDITOR.env.quirks )
-			{
-				x += this.$.clientLeft ? 1 : 0;
-				y += this.$.clientTop ? 1 : 0;
+			if ( !document.documentElement[ "getBoundingClientRect" ] ) {
+				// In Firefox, we'll endup one pixel before the element positions,
+				// so we must add it here.
+				if ( CKEDITOR.env.gecko && !CKEDITOR.env.quirks )
+				{
+					x += this.$.clientLeft ? 1 : 0;
+					y += this.$.clientTop ? 1 : 0;
+				}
 			}
 
Index: /CKEditor/trunk/_source/plugins/floatpanel/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/floatpanel/plugin.js	(revision 3625)
+++ /CKEditor/trunk/_source/plugins/floatpanel/plugin.js	(revision 3626)
@@ -215,5 +215,8 @@
 									}
 								}
-								iframe.$.contentWindow.focus();
+								if ( CKEDITOR.env.ie && CKEDITOR.env.quirks )
+									iframe.focus();
+								else
+									iframe.$.contentWindow.focus();
 							}, 0);
 					}, 0);
Index: /CKEditor/trunk/_source/plugins/menu/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/menu/plugin.js	(revision 3625)
+++ /CKEditor/trunk/_source/plugins/menu/plugin.js	(revision 3626)
@@ -160,5 +160,8 @@
 					element = this._.element = block.element;
 					element.addClass( editor.skinClass );
-					element.getDocument().getBody().setStyle( 'overflow', 'hidden' );
+
+					var elementDoc = element.getDocument();
+					elementDoc.getBody().setStyle( 'overflow', 'hidden' );
+					elementDoc.getElementsByTag( 'html' ).getItem( 0 ).setStyle( 'overflow', 'hidden' );
 
 					this._.itemOverFn = CKEDITOR.tools.addFunction( function( index )
