Index: /FCKeditor/trunk/editor/_source/internals/fcktools_gecko.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fcktools_gecko.js	(revision 678)
+++ /FCKeditor/trunk/editor/_source/internals/fcktools_gecko.js	(revision 679)
@@ -212,4 +212,5 @@
 	var oOwnerWindow = FCKTools.GetElementWindow( el ) ;
 
+	var previousElement = null ;
 	// Loop throw the offset chain.
 	while ( el )
@@ -222,7 +223,21 @@
 			break ;
 
+		/*
+		FCKDebug.Output( el.tagName + ":" + "offset=" + el.offsetLeft + "," + el.offsetTop + "  " + "scroll=" + el.scrollLeft + "," +
+			      el.scrollTop ) ;
+		*/
 		c.X += el.offsetLeft - el.scrollLeft ;
 		c.Y += el.offsetTop - el.scrollTop  ;
 
+		// Backtrack due to offsetParent's calculation by the browser ignores scrollLeft and scrollTop.
+		var scrollElement = previousElement ;
+		while ( scrollElement && scrollElement != el )
+		{
+			c.X -= scrollElement.scrollLeft ;
+			c.Y -= scrollElement.scrollTop ;
+			scrollElement = scrollElement.parentNode ;
+		}
+
+		previousElement = el ;
 		if ( el.offsetParent )
 			el = el.offsetParent ;
@@ -232,4 +247,5 @@
 			{
 				el = oOwnerWindow.frameElement ;
+				previousElement = null ;
 				if ( el )
 					oOwnerWindow = FCKTools.GetElementWindow( el ) ;
