                 continue;
             }
 
+            // Spark skins don't measure if the width is specified.
+            var skinWidth:Number;
+            if (sepSkin is IUIComponent)
+                skinWidth = IUIComponent(sepSkin).getExplicitOrMeasuredWidth();
+            else
+                skinWidth = sepSkin.measuredWidth;
+            
             sep.visible = true;
             sep.x = headerItems[i].x +
-                    visibleColumns[i].width - Math.round(sepSkin.measuredWidth / 2);
+                    visibleColumns[i].width - Math.round(skinWidth / 2);
             if (i > 0)
             {
                 sep.x = Math.max(sep.x,
-                                 separators[i - 1].x + Math.round(sepSkin.measuredWidth / 2));
+                                 separators[i - 1].x + Math.round(skinWidth / 2));
             }
             sep.y = 0;
-            sepSkin.setActualSize(sepSkin.measuredWidth, Math.ceil(cachedHeaderHeight));
-            
-            // Draw invisible background for separator affordance
+            sepSkin.setActualSize(skinWidth, Math.ceil(cachedHeaderHeight));
+
+                        // Draw invisible background for separator affordance
             sep.graphics.clear();
             sep.graphics.beginFill(0xFFFFFF, 0);
             sep.graphics.drawRect(-separatorAffordance, 0,

            // Initialise and return without actually moving anything.

            startX = event.stageX;

            // Set this to null so sort doesn't happen.
            lastItemDown = null;


            return;
        }

        // Global coordinates.
        var deltaX:Number = event.stageX - startX;
        dgSelectionLayer = Sprite(dataGrid.getChildByName("columnDragSelectionLayer"));

        // If the mouse pointer over the right (layoutDirection=”ltr”) or 
        // left (layoutDirection=”rtl”) half of the column, the drop indicator 
        // should be shown before the next column.
        var deltaXInLocalCoordinates:Number = 
            (layoutDirection == "ltr" ? +deltaX : -deltaX);
        
        // Move header selection.
        s = Sprite(dgSelectionLayer.getChildByName("headerSelection"));
        if (s)
            s.x += deltaXInLocalCoordinates;
        
         // Move header proxy.
        item = IListItemRenderer(dgSelectionLayer.getChildByName("headerDragProxy"));
        if (item)
            item.move(item.x + deltaXInLocalCoordinates, item.y);
        
        // Global coordinates.
        startX += deltaX;
        
        var allVisibleColumns:Array = dataGrid.getAllVisibleColumns();
        var pt:Point = new Point(event.stageX, event.stageY);
        pt = dataGrid.globalToLocal(pt);
