         
         for (i = 0; i < newLen; i++)
         {
-        	if (value[i] is IFlexBitmapFilter)
-        	{
-        		edFilter = value[i] as IEventDispatcher;
+            if (value[i] is IBitmapFilter)
+            {
+                edFilter = value[i] as IEventDispatcher;
                 if (edFilter)
-                    edFilter.addEventListener(Event.CHANGE, filterChangedHandler);
-                _clonedFilters.push(IFlexBitmapFilter(value[i]).createBitmapFilter());
-        	}
+                    edFilter.addEventListener(BaseFilter.CHANGE, filterChangedHandler);
+                _clonedFilters.push(IBitmapFilter(value[i]).clone());
+            }
             else
             {
-            	_clonedFilters.push(value[i]);
+                _clonedFilters.push(value[i]);
             }
         }
 

import mx.events.FlexEvent;
import mx.events.PropertyChangeEvent;
import mx.events.PropertyChangeEventKind;
import mx.filters.IFlexBitmapFilter;
import mx.geom.Transform;
import mx.geom.TransformOffsets;
import mx.graphics.IGraphicElement;

import flash.display.Sprite;
import flash.events.Event;
import flash.events.IEventDispatcher;
import flash.geom.ColorTransform;
import flash.geom.Matrix;
import flash.geom.Matrix3D;
