             }
             else
                 PopUpManager.bringToFront(_popUp);
-
-            if (point.y + _popUp.height > screen.bottom && 
+        }
+            
+        var popUpGap:Number = getStyle("popUpGap");
+        var point:Point = new Point(layoutDirection == "rtl" ? _popUp.getExplicitOrMeasuredWidth() : 0, unscaledHeight + popUpGap);
+        point = localToGlobal(point);
+        
+        if (show)
+        {          
+           if (point.y + _popUp.height > screen.bottom && 
                 point.y > (screen.top + height + _popUp.height))
             { 
                 // PopUp will go below the bottom of the stage

        var screen:Rectangle = sm.getVisibleApplicationRect();

        if (show)
        {          
            if (_popUp.parent == null)
            {
                PopUpManager.addPopUp(_popUp, this, false);

import flash.geom.Rectangle;
import flash.ui.Keyboard;
import flash.utils.getTimer;

import mx.controls.listClasses.IListItemRenderer;
import mx.core.EdgeMetrics;
import mx.core.IFlexDisplayObject;
import mx.core.ILayoutDirectionElement;
import mx.core.IRectangularBorder;
import mx.core.IUIComponent;
import mx.core.UIComponent;
