Index: /CKEditor/trunk/_source/plugins/dialog/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/dialog/plugin.js	(revision 3341)
+++ /CKEditor/trunk/_source/plugins/dialog/plugin.js	(revision 3342)
@@ -145,4 +145,14 @@
 
 		this.parts = themeBuilt.parts;
+		
+		// Set the startup styles for the dialog, avoiding it enlarging the
+		// page size on the dialog creation.
+		this.parts.dialog.setStyles(
+			{
+				position : 'absolute',
+				top : 0,
+				left: 0,
+				visibility : 'hidden'
+			});
 
 		// Call the CKEDITOR.event constructor to initialize this instance.
@@ -507,6 +517,6 @@
 				element.setStyles(
 						{
-							'left' : x + 'px',
-							'top' : y + 'px'
+							'left'	: ( x > 0 ? x : 0 ) + 'px',
+							'top'	: ( y > 0 ? y : 0 ) + 'px'
 						});
 			};
@@ -542,9 +552,4 @@
 			this.resize( definition.minWidth, definition.minHeight );
 
-			// Rearrange the dialog to the middle of the window.
-			var viewSize = CKEDITOR.document.getWindow().getViewPaneSize();
-			var dialogSize = this.getSize();
-			this.move( ( viewSize.width - dialogSize.width ) / 2, ( viewSize.height - dialogSize.height ) / 2 );
-
 			// Select the first tab by default.
 			this.selectPage( this.definition.contents[0].id );
@@ -586,10 +591,22 @@
 			this._.hasFocus = false;
 
-			// Execute onLoad for the first show.
-			this.fireOnce( 'load', {} );
-			this.fire( 'show', {} );
-
 			// Save the initial values of the dialog.
 			this.foreach( function( contentObj ) { contentObj.setInitValue && contentObj.setInitValue(); } );
+
+			// Rearrange the dialog to the middle of the window.
+			CKEDITOR.tools.setTimeout( function()
+				{
+					var viewSize = CKEDITOR.document.getWindow().getViewPaneSize();
+					var dialogSize = this.getSize();
+
+					this.move( ( viewSize.width - dialogSize.width ) / 2, ( viewSize.height - dialogSize.height ) / 2 );
+
+					this.parts.dialog.setStyle( 'visibility', '' );
+
+					// Execute onLoad for the first show.
+					this.fireOnce( 'load', {} );
+					this.fire( 'show', {} );
+				},
+				100, this );
 		},
 
@@ -654,5 +671,7 @@
 			if ( !element.getParent() )
 				return;
+
 			element.remove();
+			this.parts.dialog.setStyle( 'visibility', 'hidden' );
 
 			// Unregister all access keys associated with this dialog.
Index: /CKEditor/trunk/_source/skins/office2003/skin.js
===================================================================
--- /CKEditor/trunk/_source/skins/office2003/skin.js	(revision 3341)
+++ /CKEditor/trunk/_source/skins/office2003/skin.js	(revision 3342)
@@ -69,5 +69,5 @@
 					el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
 				},
-				0 );
+				100 );
 		});
 }
Index: /CKEditor/trunk/_source/skins/v2/skin.js
===================================================================
--- /CKEditor/trunk/_source/skins/v2/skin.js	(revision 3341)
+++ /CKEditor/trunk/_source/skins/v2/skin.js	(revision 3342)
@@ -69,5 +69,5 @@
 					el.setStyle( 'height', ( body.$.offsetHeight - 31 - 14 ) + 'px' );
 				},
-				0 );
+				100 );
 		});
 }
