         // calculate the velocity using a weighted average
         var throwVelocity:Point = calculateThrowVelocity();
         
-        // use ratio of how far they scrolled to scale the velocity
-        throwVelocity.x *= movedRatio.x;
-        throwVelocity.y *= movedRatio.y;
-        
         // if the velocity is greater than the minimum velocity, start throwing
-        if (throwVelocity.length > MIN_START_VELOCITY)
-        {
-            scroller.performThrow(throwVelocity.x, throwVelocity.y);
+        if (throwVelocity.length > minVelocityPixels)
+        {
+            scroller.performThrow(throwVelocity.x, throwVelocity.y, movedRatio);
         }
         else
         {

    
    /**
     *  @private
     *  Length the touch scroll throw effect should run
     */
    private static const THROW_EFFECT_TIME:int = 2000;
    
    //--------------------------------------------------------------------------
    //

            throwEffect.easer = throwEaser;
        }
        
        // Calculate the effect duration
        var throwEffectTime:int = calculateThrowEffectTime(distanceRatio);
        throwEffect.duration = throwEffectTime;

        // calculate the finalVSP/finalHSP
        var finalHSP:Number = viewport.horizontalScrollPosition;
        var finalVSP:Number = viewport.verticalScrollPosition;
        
        // figure out where we're scrolling to
        if (scrollerLayout && scrollerLayout.canScrollHorizontally)
