      */
     private function getSnapshot(target:Object):BitmapData
     {
+        if (!(target is GraphicElement || target is IUIComponent))
+            throw new Error(resourceManager.getString("sparkEffects", "cannotOperateOn"));
+        var bmData:BitmapData;
+        var tempFilters:Array = target.filters;
+        target.filters = [];
         if (target is GraphicElement)
-            return GraphicElement(target).captureBitmapData(true, 0, false);
-        else if (!(target is IUIComponent))
-            throw new Error(resourceManager.getString("sparkEffects", "cannotOperateOn"));
-        return BitmapUtil.getSnapshot(IUIComponent(target));
+            bmData = GraphicElement(target).captureBitmapData(true, 0, false);
+        else
+            bmData = BitmapUtil.getSnapshot(IUIComponent(target));
+        target.filters = tempFilters;
+        
+        return bmData;
     }
     /**
      * Unlike Animate's setValue we assign the new value to the filter

    override protected function setValue(property:String, value:Object):void
    {
        shader.data.progress.value = [value];
        target.filters = [shaderFilter];
    }

    /**

    override public function animationStart(animation:Animation):void
    {
        super.animationStart(animation);
        previousFilters = target.filters;
        previousPlusShaderFilters = [shaderFilter].concat(previousFilters);
        target.filters = previousPlusShaderFilters;
    }

    /**
