         var adjustedVerticalPosition:String;
         var calloutBounds:Rectangle = determinePosition(actualHorizontalPosition,
             actualVerticalPosition, matrix, regPoint);
+        var ownerBounds:Rectangle = owner.getBounds(systemManager.getSandboxRoot());
 
         // Position the callout in the opposite direction if it
         // does not fit on the screen.
         if (screen)
         {
             adjustedHorizontalPosition = adjustCalloutPosition(
-                actualHorizontalPosition,
+                actualHorizontalPosition, horizontalPosition,
                 calloutBounds.left, calloutBounds.right,
-                screen.left, screen.right);
+                screen.left, screen.right,
+                ownerBounds.left, ownerBounds.right);
 
             adjustedVerticalPosition = adjustCalloutPosition(
-                actualVerticalPosition,
+                actualVerticalPosition, verticalPosition,
                 calloutBounds.top, calloutBounds.bottom,
-                screen.top, screen.bottom);
+                screen.top, screen.bottom,
+                ownerBounds.top, ownerBounds.bottom);
         }
 
         var oldArrowDirection:String = arrowDirection;

        // Use aspect ratio to determine vertical/horizontal preference
        var isLandscape:Boolean = (screen.width > screen.height);

        var spaceLeft:Number = ownerBounds.left;
        var spaceRight:Number = screen.width - ownerBounds.right;
        var spaceTop:Number = ownerBounds.top;
        var spaceBottom:Number = screen.height - ownerBounds.bottom;

        var canFitVertical:Boolean = ((spaceTop > 0) || (spaceBottom > 0));
        var canFitHorizontal:Boolean = ((spaceLeft > 0) || (spaceRight > 0));

        if (verticalPosition != CalloutPosition.AUTO)
        {

        if (isOpen)
            return;
        
        // reset state
        invalidatePositionFlag = false;
        arrowDirectionAdjusted = false;

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