     
     private function setTransform(value:flash.geom.Transform):void
     {
-        // Clean up the old event listeners
+        // Clean up the old transform
         var oldTransform:mx.geom.Transform = _transform as mx.geom.Transform;
         if (oldTransform)
-        {
-            oldTransform.removeEventListener(PropertyChangeEvent.PROPERTY_CHANGE, transformPropertyChangeHandler);
-        }
+        	oldTransform.target = null;
 
         var newTransform:mx.geom.Transform = value as mx.geom.Transform;
 
         if (newTransform)
-        {
-            newTransform.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, transformPropertyChangeHandler);
-        }
+        	newTransform.target = this;
 
         _transform = value;
     }

     */
    override public function set transform(value:flash.geom.Transform):void
    {
        setTransform(value);

        assignTransformMatrices();
        super.transform.colorTransform = value.colorTransform;
        super.transform.perspectiveProjection = _transform.perspectiveProjection;
        if (maintainProjectionCenter)
            applyPerspectiveProjection();
    }
    
    private function assignTransformMatrices():void
    {
        var m:Matrix = _transform.matrix;
        var m3:Matrix3D =  _transform.matrix3D;
        if(m != null)
            setLayoutMatrix(m.clone(), true /*invalidateLayout*/);
        else if(m3 != null)
            setLayoutMatrix3D(m3.clone(), true /*invalidateLayout*/);
    }

    private function transformPropertyChangeHandler(event:PropertyChangeEvent):void
    {
        if (event.kind == PropertyChangeEventKind.UPDATE)
        {
            if (event.property == "matrix" || event.property == "matrix3D")
            {
                assignTransformMatrices();
            }
            else if (event.property == "perspectiveProjection")
            {
                super.transform.perspectiveProjection = _transform.perspectiveProjection;
                if (maintainProjectionCenter)
                    applyPerspectiveProjection();
            }
            else if (event.property == "colorTransform")
            {
                super.transform.colorTransform = _transform.colorTransform;
            }
        }
    }
    
    /**

import flash.display.Stage;
import flash.events.Event;
import flash.events.FocusEvent;
import flash.geom.ColorTransform;
import flash.geom.Matrix;
import flash.geom.Matrix3D;
import flash.geom.PerspectiveProjection;
