         if (popUp is UIComponent)
         {
             if (popUpWidthMatchesAnchorWidth)
-                UIComponent(popUp).width = unscaledWidth;
-            else
+                UIComponent(popUp).width = popUpWidth = unscaledWidth;
+			else if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_5)
                 UIComponent(popUp).explicitWidth = popUpWidth;
             
             if (popUpHeightMatchesAnchorHeight)
-                UIComponent(popUp).height = unscaledHeight;
-            else
+                UIComponent(popUp).height = popUpHeight = unscaledHeight;
+			else if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_5)
                 UIComponent(popUp).explicitHeight = popUpHeight;
+            // validate now because the popup is higher in the nest level than the 
+            // PopUpAnchor
+            UIComponent(popUp).validateNow();
         }
         else
         {

     */
    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
    {
        super.updateDisplayList(unscaledWidth, unscaledHeight);                
        applyPopUpTransform(unscaledWidth, unscaledHeight);            
    }
    

            return;
            
        _displayPopUp = value;
        
        displayPopUpChanged = true;
        // request validation of display list so we
        // know our size before putting up the popup
        // and sizing it
        invalidateDisplayList();
    }
    
    /**
