Можно подумать, что если бы вы вызвали scale () один раз, а затем снова вызвали scale (), результаты были бы кумулятивными, но, похоже, это не так.Кажется, что если вы вызываете scale (), он запоминает исходные измерения и масштабирует их, а не пересчитанные ранее измерения.
Я получил ваш пример для работы, чтобы сохранить масштаб (по одной переменной для каждого измерения).) на вашем объекте (начиная с scaleX = scaleY = 1).Затем я умножил сохраненный масштаб на масштаб, рассчитанный по конечной позиции изменяющего размер / курсора, и сохранил их в вашем объекте.Наконец, я использовал сохраненные масштабы в вызове функции scale () для изменения размеров ваших фигур.
См. http://jsfiddle.net/donniec/JAVWN/2/