разбираем код и смотрим почему уходит влево.

Код AS3:
//допустим у вас здесь значения
//mouseX = 20;
//mouseY = 40;
map.scaleX += event.delta / mod;
map.scaleY += event.delta / mod;
// А теперь после масштабирования ваш ролик вырос, и указатель мыши относительно ролика сдвинулся
// допустим event.delta / mod == 2;
// тогда ориентировочно
// mouseX = 10;
// mouseY = 20;
// а теперь вы координаты курсора используете в формуле
// Но они ведь отличаются от исходных значений которые были до масштабирования в 2 раза
//(Да и 2 можно упростить по математике));
map.x = ((2 * mouseX) - (2 * (event.localX * map.scaleX))) / 2;
map.y = ((2 * mouseY) - (2 * (event.localY * map.scaleY))) / 2;
вот и все.
Поменяйте операции местами,
сначала делайте смещение а потом уже масштабируйте и все должно быть ок.