         else
         {
             // Return estimated width/height here as we've yet to fully
-            // realize valid image content.
-            measuredWidth = !isNaN(_preliminaryWidth) ? _preliminaryWidth : measuredWidth;
-            measuredHeight = !isNaN(_preliminaryHeight) ? _preliminaryHeight : measuredHeight;
+            // realize valid image content. If we are loading new content
+            // we keep the old measured width/height, otherwise we fall back
+            // to 0 unless a preliminary width/height is set. This is to avoid
+            // sizing to 0,0 for a frame unnecessarily.
+            var previousWidth:Number = (_source == null || _source == "") ? 0 : measuredWidth;
+            var previousHeight:Number = (_source == null || _source == "") ? 0 : measuredHeight;
+            measuredWidth = !isNaN(_preliminaryWidth) && (measuredWidth == 0) ? 
+                _preliminaryWidth : previousWidth;
+            measuredHeight = !isNaN(_preliminaryHeight) && (measuredHeight == 0) ? 
+                _preliminaryHeight : previousHeight;
             return;
         }
         

     */
    private function clearLoadingContent():void
    {
        removeLoadingListeners();
        loadingContent = null;
    }

    
    private var _source:Object;
    
    [Bindable("sourceChanged")]
    [Inspectable(category="General")]
    
    /**
