А почему вы вращаете _transformContainer да еще и относительно такой точки ( не понимаю, почему учитываются его x и y координаты)? У меня максимально просто случай: изображение и контейнер с установленным scrollRect. Метод будет просто принимать на вход изображение и угол и поворачивать его относительно центра scrollrect (еще одно несоответствие, т.к. у вас scrollRect тоже поворачивается, а мне надо, чтобы я всегда видел прямоугольник, полностью заполненный изображением, которое в свою очередь может быть повернуто).
Я попытался перенести этот код к себе, но у меня не работает ну никак.

Код AS3:
private static var DEG_TO_RAD:Number = 3.1415926535897932 / 180;
public static function rotateImageAroundCenterOfViewPort(image:Image, value:int):void
{
var xShift:Number = image.x + image.parent.width / 2;
var yShift:Number = image.y + image.parent.height / 2;
var matrix:Matrix = image.transform.matrix;
matrix.translate( -image.x, -image.y);
matrix.rotate( -image.rotation * DEG_TO_RAD);
matrix.rotate(value * DEG_TO_RAD);
matrix.translate(xShift, yShift);
image.transform.matrix = matrix;
}
У меня компонент Image лежит внутри контейнера, scrollRect которого - он сам (т.е. прямоугольник (0, 0, w, h)). Вроде по сути все то же самое, но не работает.
Кстати, у вас похоже тоже погрешность накапливается (от этого никуда не деться?) - после нескольких минут вращения изображение прилично так сдвинулось.