             // lastSnappedElement was set as a side-effect of the call to getSnappedPosition above.  
             orientationChangeSnapElement = lastSnappedElement;
         }
-    }
-    
-    /**
-     *  @private 
-     */
-    private function orientationChangeHandler(event:Event):void
-    {
-        if (getStyle("interactionMode") == InteractionMode.TOUCH)
-        {
-            // When the orientation (landscape/portrait) changes, then the valid
-            // scroll position ranges may have changed.
-            checkScrollPosition();
-        }
+    
+        // Force the viewport layout to clear its cache of element
+        // dimensions so it can be repopulated with correct values
+        // after the orientation change is complete.
+        if (viewportLayout)
+            viewportLayout.clearVirtualLayoutCache();
     }
     
     //--------------------------------------------------------------------------

    /**
     *  @private 
     */
    private function handleContentSizeChangeOnUpdateComplete(event:FlexEvent):void
    {
        viewport.removeEventListener(FlexEvent.UPDATE_COMPLETE, 
            handleContentSizeChangeOnUpdateComplete);
        
        handleContentSizeChange();
    }
    
    /**

    private function removedFromStageHandler(event:Event):void
    {
        if (getStyle("interactionMode") == InteractionMode.TOUCH)
            systemManager.stage.removeEventListener("orientationChanging", orientationChangingHandler, true);
    }
    
    /**
