         // explicit changes to horizontalPostion and verticalPosition.
         if (isOpen && invalidatePositionFlag)
         {
-            updatePopUpPosition();
-            invalidatePositionFlag = false;
+            //check if stage orientation changed
+            if (stageOrientationChangedFlag)
+            {
+                //queue call to updatePopUpPosition
+                callLater(updatePopUpPosition);
+                stageOrientationChangedFlag = false;
+            }
+            else
+            {
+                updatePopUpPosition();
+            }
         }
 
         // Position the arrow

        
        if (systemManagerParent)
            systemManagerParent.addEventListener(Event.RESIZE, systemManager_resizeHandler);
    }
    
    /**

        // reset state
        invalidatePositionFlag = false;
        arrowDirectionAdjusted = false;
        stageOrientationChangedFlag = false;

        // Add to PopUpManager, calls updatePopUpPosition(), and change state
        super.open(owner, modal);
