             else
                 PopUpManager.bringToFront(_dropdown);
 
-            point = _dropdown.parent.globalToLocal(point);
-
             // if we donot have enough space in the bottom display the dropdown
             // at the top. But if the space there is also less than required
             // display it below.
-            if (point.y + _dropdown.height > screen.height &&
-                point.y > _dropdown.height)
+            if (point.y + _dropdown.height > screen.bottom &&
+                point.y > screen.top + _dropdown.height)
             {
                 // Dropdown will go below the bottom of the stage
                 // and be clipped. Instead, have it grow up.

                tweenUp = false;
            }
        
            var sel:int = _dropdown.selectedIndex;
            if (sel == -1)
                sel = 0;

        var point:Point = new Point(0, unscaledHeight);
        point = localToGlobal(point);
        
        var sm:ISystemManager = systemManager.topLevelSystemManager;
        var sbRoot:DisplayObject = sm.getSandboxRoot();
        var screen:Rectangle;

        if (sm != sbRoot)
        {
            var request:InterManagerRequest = new InterManagerRequest(InterManagerRequest.SYSTEM_MANAGER_REQUEST, 
                                    false, false,
                                    "getVisibleApplicationRect"); 
            sbRoot.dispatchEvent(request);
            screen = Rectangle(request.value);
        }
        else
            screen = sm.getVisibleApplicationRect();

        //opening the dropdown 
        if (show)
        {
