Index: /CKEditor/trunk/CHANGES.html
===================================================================
--- /CKEditor/trunk/CHANGES.html	(revision 5981)
+++ /CKEditor/trunk/CHANGES.html	(revision 5982)
@@ -84,4 +84,5 @@
 		<li><a href="http://dev.ckeditor.com/ticket/6376">#6376</a> : BIDI: buttons should not toggle the base language direction.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6235">#6235</a> : BIDI: Applying direction to multi-paragraph selection within a div.</li>
+		<li><a href="http://dev.ckeditor.com/ticket/6187">#6187</a> : [IE6] Multi-instance loading produces 404s on background images.</li>
 		<li>Updated the following language files:<ul>
 			<li><a href="http://dev.ckeditor.com/ticket/6427">#6427</a> : Ukrainian;</li>
Index: /CKEditor/trunk/_source/core/_bootstrap.js
===================================================================
--- /CKEditor/trunk/_source/core/_bootstrap.js	(revision 5981)
+++ /CKEditor/trunk/_source/core/_bootstrap.js	(revision 5982)
@@ -67,7 +67,5 @@
 	});
 
-/*
-TODO: Enable the following and check if effective.
-
+// Needed for IE6 to not request image (HTTP 200 or 304) for every CSS background. (#6187)
 if ( CKEDITOR.env.ie )
 {
@@ -83,5 +81,4 @@
 	}
 }
-*/
 
 /**
Index: /CKEditor/trunk/_source/core/imagecacher.js
===================================================================
--- /CKEditor/trunk/_source/core/imagecacher.js	(revision 5981)
+++ /CKEditor/trunk/_source/core/imagecacher.js	(revision 5982)
@@ -33,6 +33,8 @@
 		 * Loads one or more images.
 		 * @param {Array} images The URLs for the images to be loaded.
-		 * @param {Function} callback The function to be called once all images
-		 *		are loaded.
+		 * @param {Function} callback The optional function to be called once all images
+		 *		are loaded. You can bind any function to the returned event object.
+		 * @return {CKEDITOR.event} Event object which fires 'preloaded' event when all images finished.
+		 *    Additionally it set "finished" property flag after 'preloaded' event.
 		 */
 		load : function( images, callback )
@@ -40,8 +42,17 @@
 			var pendingCount = images.length;
 
+			var event = new CKEDITOR.event;
+			event.on( 'preloaded', function()
+			{
+				event.finished = true;
+			});
+			
+			if ( callback )
+				event.on( 'preloaded', callback );
+
 			var checkPending = function()
 			{
 				if ( --pendingCount === 0 )
-					callback();
+					event.fire( 'preloaded' );
 			};
 
@@ -55,4 +66,6 @@
 					loadImage( image, checkPending );
 			}
+
+			return event;
 		}
 	};
Index: /CKEditor/trunk/_source/core/loader.js
===================================================================
--- /CKEditor/trunk/_source/core/loader.js	(revision 5981)
+++ /CKEditor/trunk/_source/core/loader.js	(revision 5982)
@@ -60,5 +60,5 @@
 			'core/htmlparser/filter'	: [ 'core/htmlparser' ],
 			'core/htmlparser/basicwriter': [ 'core/htmlparser' ],
-			'core/imagecacher'		: [ 'core/dom/element' ],
+			'core/imagecacher'		: [ 'core/dom/element', 'core/event' ],
 			'core/lang'				: [],
 			'core/plugins'			: [ 'core/resourcemanager' ],
Index: /CKEditor/trunk/_source/core/skins.js
===================================================================
--- /CKEditor/trunk/_source/core/skins.js	(revision 5981)
+++ /CKEditor/trunk/_source/core/skins.js	(revision 5982)
@@ -56,20 +56,28 @@
 
 		// Check if we need to preload images from it.
-		if ( !preloaded[ skinName ] )
-		{
-			var preload = skinDefinition.preload;
-			if ( preload && preload.length > 0 )
-			{
+		var preload = skinDefinition.preload;
+		if ( preload && preload.length > 0 )
+		{
+			if ( !preloaded[ skinName ] )
+			{
+				// Prepare image URLs
 				appendSkinPath( preload );
-				CKEDITOR.imageCacher.load( preload, function()
-					{
-						preloaded[ skinName ] = 1;
+
+				// Get preloader event dispatcher object.
+				preloaded[ skinName ] = CKEDITOR.imageCacher.load( preload );
+			}
+
+			if ( !preloaded[ skinName ].finished )
+			{
+				// Bind listener for this editor instance.
+				preloaded[ skinName ].on( 'preloaded', function()
+					{
 						loadPart( editor, skinName, part, callback );
-					} );
+					}
+				);
+
+				// Execution will be continued from event listener.
 				return;
 			}
-
-			// Mark it as preloaded.
-			preloaded[ skinName ] = 1;
 		}
 
