                 tempVerticalPosition);
 
             // invalidate the skin if the arrow direction changed
-            if (_arrowDirection != adjustedArrowDirection)
-            {
-                _arrowDirection = adjustedArrowDirection;
+            if (arrowDirection != adjustedArrowDirection)
+            {
+                setArrowDirection(adjustedArrowDirection);
 
                 if (arrow)
                     arrow.visible = (arrowDirection != ArrowDirection.NONE);


        if (!matrix)
            return regPoint;

        var calloutBounds:Rectangle = new Rectangle();

        determinePosition(actualHorizontalPosition, actualVerticalPosition, matrix, regPoint, calloutBounds);

        var adjustedHorizontalPosition:String;
        var adjustedVerticalPosition:String;

        // Position the callout in the opposite direction if it
        // does not fit on the screen.


        // If the callout still doesn't fit, then nudge it
        // so it is completely on the screen. Make sure to include scale.

        regPoint.y += nudgeToFit(calloutBounds.top, calloutBounds.bottom,
            screen.top + margin, screen.bottom - margin, concatScaleY);
        
        regPoint.x += nudgeToFit(calloutBounds.left, calloutBounds.right,
            screen.left + margin, screen.right - margin, concatScaleX);

        // Compute the stage coordinates of the upper,left corner of the PopUp, taking
        // the postTransformOffsets - which include mirroring - into account.
