Index: /CKEditor/trunk/CHANGES.html
===================================================================
--- /CKEditor/trunk/CHANGES.html	(revision 3892)
+++ /CKEditor/trunk/CHANGES.html	(revision 3893)
@@ -126,4 +126,5 @@
  			list command may leak outside of a selected table cell and into the rest of document.</li>
  		<li><a href="http://dev.fckeditor.net/ticket/3916">#3916</a> : Fixed maximize does not enlarge editor width when width is set.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3879">#3879</a> : [webkit] Color button panel had incorrect size on first open.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/3839">#3839</a> : Update Scayt plugin to reflect the latest change from SpellChecker.net.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/3742">#3742</a> : Fixed wrong dialog layout for dialogs without tab bar in IE RTL mode .</li>
Index: /CKEditor/trunk/_source/plugins/floatpanel/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/floatpanel/plugin.js	(revision 3892)
+++ /CKEditor/trunk/_source/plugins/floatpanel/plugin.js	(revision 3893)
@@ -212,13 +212,6 @@
 							}
 
-							if ( !CKEDITOR.env.gecko || panel.isLoaded )
-							{
-								// IE7 needs some time (setting the delay to 0ms won't work) to refresh
-								// the scrollHeight. (#3174)
-								if ( CKEDITOR.env.ie && CKEDITOR.env.version >= 7 )
-									setTimeout( setHeight, 50 );
-								else
-									setHeight();
-							}
+							if ( panel.isLoaded )
+								setHeight();
 							else
 								panel.onLoad = setHeight;
Index: /CKEditor/trunk/_source/plugins/panel/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/panel/plugin.js	(revision 3892)
+++ /CKEditor/trunk/_source/plugins/panel/plugin.js	(revision 3893)
@@ -134,5 +134,4 @@
 					langCode = parentDiv.getParent().getAttribute( 'lang' ),
 					doc = iframe.getFrameDocument();
-
 				// Initialize the IFRAME document body.
 				doc.$.open();
@@ -141,4 +140,11 @@
 				if ( CKEDITOR.env.isCustomDomain() )
 					doc.$.domain = document.domain;
+
+				var onLoad = CKEDITOR.tools.addFunction( CKEDITOR.tools.bind( function( ev )
+					{
+						this.isLoaded = true;
+						if ( this.onLoad )
+							this.onLoad();
+					}, this ) );
 
 				doc.$.write(
@@ -148,5 +154,6 @@
 							'<style>.' + className + '_container{visibility:hidden}</style>' +
 						'</head>' +
-						'<body class="cke_' + dir + ' cke_panel_frame ' + CKEDITOR.env.cssClass + '" style="margin:0;padding:0">' +
+						'<body class="cke_' + dir + ' cke_panel_frame ' + CKEDITOR.env.cssClass + '" style="margin:0;padding:0"' +
+						' onload="( window.CKEDITOR || window.parent.CKEDITOR ).tools.callFunction(' + onLoad + ');">' +
 						'</body>' +
 						// It looks strange, but for FF2, the styles must go
@@ -161,12 +168,4 @@
 				// Register the CKEDITOR global.
 				win.$.CKEDITOR = CKEDITOR;
-
-				win.on( 'load', function( ev )
-					{
-						this.isLoaded = true;
-						if ( this.onLoad )
-							this.onLoad();
-					},
-					this);
 
 				doc.on( 'keydown', function( evt )
