Index: _source/plugins/floatpanel/plugin.js
===================================================================
--- _source/plugins/floatpanel/plugin.js	(revision 5030)
+++ _source/plugins/floatpanel/plugin.js	(working copy)
@@ -135,6 +135,9 @@
 						display	: ''
 					});
 
+				// To allow the context menu to decrease back their width
+				element.getFirst().removeStyle('width');
+
 				// Configure the IFrame blur event. Do that only once.
 				if ( !this._.blurSet )
 				{
@@ -192,9 +195,34 @@
 
 						var panelLoad = CKEDITOR.tools.bind( function ()
 						{
+							var target = element.getFirst();
+
 							if ( block.autoSize )
 							{
-								var target = element.getFirst();
+								// We must adjust first the width or IE6 could include extra lines in the height computation
+								var widthNode = block.element.$;
+
+								if ( CKEDITOR.env.gecko || CKEDITOR.env.opera)
+									widthNode = widthNode.parentNode;
+
+								if ( CKEDITOR.env.ie)
+									widthNode = widthNode.document.body;
+
+								var width = widthNode.scrollWidth;
+								// Account for extra height needed due to IE quirks box model bug:
+								// http://en.wikipedia.org/wiki/Internet_Explorer_box_model_bug
+								// (#3426)
+								if ( CKEDITOR.env.ie && CKEDITOR.env.quirks && width > 0 )
+									width += ( target.$.offsetWidth || 0 ) - ( target.$.clientWidth || 0 );
+								// A little extra at the end.
+								// If not present, IE6 might break into the next line, but also it looks better this way
+								width += 4 ;
+
+								target.setStyle( 'width', width + 'px' );
+
+								// IE doesn't compute the scrollWidth if a filter is applied previously
+								block.element.addClass( 'cke_frameLoaded')
+
 								var height = block.element.$.scrollHeight;
 
 								// Account for extra height needed due to IE quirks box model bug:
@@ -209,7 +237,7 @@
 								panel._.currentBlock.element.setStyle( 'display', 'none' ).removeStyle( 'display' );
 							}
 							else
-								element.getFirst().removeStyle( 'height' );
+								target.removeStyle( 'height' );
 
 							var panelElement = panel.element,
 								panelWindow = panelElement.getWindow(),
Index: _source/skins/kama/menu.css
===================================================================
--- _source/skins/kama/menu.css	(revision 5030)
+++ _source/skins/kama/menu.css	(working copy)
@@ -94,8 +94,10 @@
 	height:19px;
 	margin-left: 24px;
 	background-color: #fff;
-	_overflow: hidden;
-	_width: 80px;
+}
+/* Set these after the document has been loaded and we know the dimensions*/
+.cke_skin_kama .cke_frameLoaded .cke_menuitem .cke_label
+{
 	filter: alpha(opacity=70); /* IE */
 	opacity: 0.70; /* Safari, Opera and Mozilla */
 }
Index: _source/skins/office2003/menu.css
===================================================================
--- _source/skins/office2003/menu.css	(revision 5030)
+++ _source/skins/office2003/menu.css	(working copy)
@@ -93,8 +93,10 @@
 	height:19px;
 	margin-left: 24px;
 	background-color: #fff;
-	_overflow: hidden;
-	_width: 80px;
+}
+/* Set these after the document has been loaded and we know the dimensions*/
+.cke_skin_office2003 .cke_frameLoaded .cke_menuitem .cke_label
+{
 	filter: alpha(opacity=70); /* IE */
 	opacity: 0.70; /* Safari, Opera and Mozilla */
 }
Index: _source/skins/v2/menu.css
===================================================================
--- _source/skins/v2/menu.css	(revision 5030)
+++ _source/skins/v2/menu.css	(working copy)
@@ -93,8 +93,10 @@
 	height:19px;
 	margin-left: 24px;
 	background-color: #fff;
-	_overflow: hidden;
-	_width: 80px;
+}
+/* Set these after the document has been loaded and we know the dimensions*/
+.cke_skin_v2 .cke_frameLoaded .cke_menuitem .cke_label
+{
 	filter: alpha(opacity=70); /* IE */
 	opacity: 0.70; /* Safari, Opera and Mozilla */
 }

