Index: /CKEditor/trunk/CHANGES.html
===================================================================
--- /CKEditor/trunk/CHANGES.html	(revision 4518)
+++ /CKEditor/trunk/CHANGES.html	(revision 4519)
@@ -66,4 +66,5 @@
 		<li><a href="http://dev.fckeditor.net/ticket/4654">#4654</a> : Fixed 'CKEDITOR.config.font_defaultLabel(fontSize_defaultLabel)' is not working.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/3950">#3950</a> : Fixed table column insertion incorrect when selecting empty cell area.</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3912">#3912</a> : Fixed UIColor not working in IE when page has more than 30+ editors.</li>
 	<h3>
 		CKEditor 3.0.1</h3>
Index: /CKEditor/trunk/_source/skins/kama/skin.js
===================================================================
--- /CKEditor/trunk/_source/skins/kama/skin.js	(revision 4518)
+++ /CKEditor/trunk/_source/skins/kama/skin.js	(revision 4519)
@@ -6,5 +6,6 @@
 CKEDITOR.skins.add( 'kama', (function()
 {
-	var preload = [];
+	var preload = [],
+		uiColorStylesheetId = 'cke_ui_color';
 
 	if ( CKEDITOR.env.ie && CKEDITOR.env.version < 7 )
@@ -90,10 +91,13 @@
 			}
 
-			function addStylesheet( document )
-			{
-				var node = document.getHead().append( 'style' );
-				node.setAttribute( "id", "cke_ui_color" );
-				node.setAttribute( "type", "text/css" );
-
+			function getStylesheet( document )
+			{
+				var node = document.getById( uiColorStylesheetId );
+				if( !node )
+				{
+					node = document.getHead().append( 'style' );
+					node.setAttribute( "id", uiColorStylesheetId );
+					node.setAttribute( "type", "text/css" );
+				}
 				return node;
 			}
@@ -106,8 +110,4 @@
 					if ( CKEDITOR.env.webkit )
 					{
-						// Truncate manually.
-						for ( i = 0 ; i < styleNodes[ id ].$.sheet.rules.length ; i++ )
-							styleNodes[ id ].$.sheet.removeRule( i );
-
 						for ( i = 0 ; i < styleContent.length ; i++ )
 						{
@@ -126,7 +126,7 @@
 
 						if ( CKEDITOR.env.ie )
-							styleNodes[ id ].$.styleSheet.cssText = content;
+							styleNodes[ id ].$.styleSheet.cssText += content;
 						else
-							styleNodes[ id ].setHtml( content );
+							styleNodes[ id ].$.innerHTML += content;
 					}
 				}
@@ -147,5 +147,5 @@
 				{
 					var cssContent,
-						uiStyle = addStylesheet( CKEDITOR.document ),
+						uiStyle = getStylesheet( CKEDITOR.document ),
 						cssId = '#cke_' + CKEDITOR.tools.escapeCssSelector( editor.name );
 
@@ -187,5 +187,5 @@
 				if ( !iframe.getById( 'cke_ui_color' ) )
 				{
-					var node = addStylesheet( iframe );
+					var node = getStylesheet( iframe );
 					uiColorMenus.push( node );
 
