alatar неправильно
нужна не нормализация, а умножение. так как нужна интерполяция положения точек, а не приведение их к длине
простой вариант:

Код AS3:
private function scaleAround (m:Matrix, p:Point, sx:Number, sy:Number):Matrix
{
var a:Number = m.a * sx;
var b:Number = m.b * sx;
var c:Number = m.c * sy;
var d:Number = m.d * sy;
m.tx += (m.a - a) * p.x + (m.c - c) * p.y;
m.ty += (m.b - b) * p.x + (m.d - d) * p.y;
m.a = a;
m.b = b;
m.c = c;
m.d = d;
return m;
}