      */
     override public function set viewport(newViewport:IViewport):void
     {
+        const oldViewport:IViewport = super.viewport;
+        if (oldViewport == newViewport)
+            return;
+        
+        if (oldViewport)
+        {
+            oldViewport.removeEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);
+            removeEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);
+        }
+        
         super.viewport = newViewport;
+
         if (newViewport)
         {
-            updateMaximumAndPageSize();
+            updateMaximumAndPageSize()
             value = newViewport.verticalScrollPosition;;
+            newViewport.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);
+            addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);  
         }
     }    
 

            maximum = viewport.contentHeight - viewport.height;
        }
    }
}
}


package spark.components
{
import flash.events.MouseEvent;
import flash.geom.Point;

import mx.core.mx_internal;
