             bitmapFrom = getSnapshot(target);
         if (!bitmapTo)
             bitmapTo = getSnapshot(target);
+        
+        // When all efforts to get a bitmap fail, we don't create a shader.
+        if (!bitmapFrom || !bitmapTo)
+        {
+            hasBitmaps = false;
+            
+            // clean up
+            if (bitmapFrom)
+                bitmapFrom.dispose();
+            else if (bitmapTo)
+                bitmapTo.dispose();
+        }
+        else
+        {
+            hasBitmaps = true;
+        }
 
         // Fix up the visibility if it's becoming visible
         if (propertyChanges &&

     */
    override protected function getCurrentValue(property:String):*
    {
        return shader[property];
    }

    /**
     * Override FXAnimate's setupStyleMapEntry to avoid the need to 
     * validate our properties against the 'target' (since we actually
     * set properties on our associated filter instance).
     *  

        {
            target.visible = true;
        }
        
        // Only create shader if bitmaps are present.
        if (hasBitmaps)
        {
            shader = new Shader(shaderByteCode);
            if (shader.data)
            {
                shader.data.from.input = bitmapFrom;
                shader.data.to.input = bitmapTo;
                
                motionPaths = new <MotionPath>[new MotionPath("progress")];
                motionPaths[0].keyframes = new <Keyframe>[new Keyframe(0, 0), 
                    new Keyframe(duration, 1)];
                
                // auto-set width/height if exposed in shader
                if ("width" in shader.data)
                    shader.data.width.value = [bitmapFrom.width];
                if ("height" in shader.data)
                    shader.data.height.value = [bitmapFrom.height];
                if (shaderProperties)
                {
                    for (var prop:String in shaderProperties)
                    {
                        var value:Object = shaderProperties[prop];
                        shader.data[prop].value = (value is Array) ?
                            value :
                            [value];
                    }
                }
                shaderFilter = new ShaderFilter(shader);
            }
        }
        
        super.play();
