Попробуйте вставить вот такую строчку в Ваш исходный код:

Код AS3:
trace("left-top-height-width ", rect.left, rect.top, rect.height, rect.width);
И посмотрите меняются ли у Вас значения
height и
width
Дело в том что у Вас не написано в каком месте и сколько раз Вы вычисляете координаты XX и YY, но
вот тут:

Код AS3:
matrix.translate(-XX, -YY);
и вот тут:

Код AS3:
matrix.translate(XX, YY);
параметры XX и YY должны быть разные