         
         if (skinStateIsDirty)
         {
-            skin.currentState = getCurrentSkinState();
+            // This component must first be updated to the pending state as the
+            // skin inherits styles from this component.
+            var pendingState:String = getCurrentSkinState();
+            applyStateStyles(skin.currentState, pendingState, false);
+            skin.currentState = pendingState;
             skinStateIsDirty = false;
         }
     }
-    
+
     /**
      *  @private
      */

        _skin = value;
        dispatchEvent(new Event("skinChanged"));
    }
    
    //--------------------------------------------------------------------------
    //
    //  Overridden methods

        if (focusObj && focusObj is IInvalidating)
            IInvalidating(focusObj).invalidateDisplayList();
    }

    /**
     *  @private
     */
