         {
             conditionalEventDispatch("contentBackgroundColorChanged");
         }
-        
-        if (allStyles || styleName == "rollOverColor")
-        {
-            conditionalEventDispatch("rollOverColorChanged");
-        }
-        
-        if (allStyles || styleName == "selectionColor")
-        {
-            conditionalEventDispatch("selectionColorChanged");
-        }
+    }
+    
+    /**
+     *  @private
+     */
+    override protected function renderBackgroundFill():void
+    {
+        // if handleHighlightBackground is set to true, we always 
+        // draw a background and don't need to worry about mouseEnabledWhereTransparent.
+        // However, if it's false, then we should just let super.renderBackgroundFill()
+        // do its job.
+        if (!handleHighlightBackground)
+        {
+            super.renderBackgroundFill();
+            return;
+        }
+        
+        // TODO (rfrishbe): Would be good to remove this duplicate code with the 
+        // super.renderBackgroundFill() version
+        var w:Number = (resizeMode == ResizeMode.SCALE) ? measuredWidth : unscaledWidth;
+        var h:Number = (resizeMode == ResizeMode.SCALE) ? measuredHeight : unscaledHeight;
+        
+        if (isNaN(w) || isNaN(h))
+            return;
+        
+        graphics.clear();
+        
+        var backgroundColor:uint;
+        
+        if (selected)
+            backgroundColor = getStyle("selectionColor");
+        else if (hovered)
+            backgroundColor = getStyle("rollOverColor");
+        else
+        {
+            var alternatingColors:Array = getStyle("alternatingItemColors");
+            
+            if (alternatingColors && alternatingColors.length > 0)
+            {
+                // translate these colors into uints
+                styleManager.getColorNames(alternatingColors);
+                
+                backgroundColor = alternatingColors[index % alternatingColors.length];
+            }
+            
+            backgroundColor = getStyle("contentBackgroundColor");
+        }
+        graphics.beginFill(backgroundColor, 1);
+        
+        if (layout && layout.useVirtualLayout)
+            graphics.drawRect(horizontalScrollPosition, verticalScrollPosition, w, h);
+        else
+        {
+            const tileSize:int = 4096;
+            const maxX:int = Math.round(Math.max(w, contentWidth));
+            const maxY:int = Math.round(Math.max(h, contentHeight));
+            for (var x:int = 0; x < maxX; x += tileSize)
+                for (var y:int = 0; y < maxY; y += tileSize)
+                {
+                    var tileWidth:int = Math.min(maxX - x, tileSize);
+                    var tileHeight:int = Math.min(maxY - y, tileSize);
+                    graphics.drawRect(x, y, tileWidth, tileHeight); 
+                }
+        }
+        
+        graphics.endFill();
     }
     
     //--------------------------------------------------------------------------

        if (value != _selected)
        {
            _selected = value;
            setCurrentState(getCurrentRendererState(), playTransitions); 
        }
    }
       


import spark.components.DataRenderer;
import spark.components.IItemRenderer;
import spark.components.ResizeMode;

use namespace mx_internal; 

