                 scroller.horizontalScrollBar.snapInterval = 0;
             if (scroller.verticalScrollBar)
                 scroller.verticalScrollBar.snapInterval = 0;
-        }            
-    }
-    
+        }
+    }
+
+    /**
+     *  @private
+     */
+    override protected function partRemoved(partName:String, 
+                                            instance:Object):void
+    {                
+        super.partRemoved(partName, instance);
+                
+        if (instance == textDisplay)
+        {
+            textDisplay.removeEventListener("styleChanged", 
+                                            textDisplay_styleChangedHandler);
+        }
+    }    
     //--------------------------------------------------------------------------
     //
     //  Methods


        textDisplay.scrollToRange(anchorPosition, activePosition);
    }
}

}

        if (instance == textDisplay)
        {
            // In default.css, the TextArea selector has a declaration
            // for lineBreak which sets it to "toFit".

            // The skin is loaded after the intial properties have been
            // set so these wipe out explicit sets.
            textDisplay.multiline = true;
            
            textDisplay.addEventListener("styleChanged", 
                                         textDisplay_styleChangedHandler);
        }
        
        // The scroller, between textDisplay and this in the chain, should not 
