неужели никак не срисовать в BitmapData клип, если его содержимое начинается не в (0, 0) а в отрицательных координатах? есть там параметр
clipRect:Rectangle (default = null) — A Rectangle object that defines the area of the source object to draw. If you do not supply this value, no clipping occurs and the entire source object is drawn. , но с отрицательными он зараза будто не хочет работать.

Код:
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.*;
var myBitmapData:BitmapData = new BitmapData(frame.width, frame.height);
var sourceRect:Rectangle = new Rectangle(-20, -20, frame.width, frame.height);
myBitmapData.draw(frame, null, null, null, sourceRect);
var bmp:Bitmap = new Bitmap(myBitmapData, 'auto', true);
this.addChild(bmp);
bmp.x = bmp.y = 100;
bmp.rotation = 10;
//получается клип, видимый всё-равно с точки (0, 0) оригинала
где требуется: png для вращения. точка, вокруг которой надо вращать, устанавливается визуально (для удобства) ну и её координаты (0, 0).
если проблема напрямую не решится - для нашедших тему - есть варианты обхода:
1. неудобный путь - много клипов в библиотеке: у вас два клипа: mcRotate, который вы будете вращать, и mcBmp, который вложен в mcRotate и расположен так, чтобы точка отн. которой будет вращение лежит в 0, 0. в mcBmp лежит png в 0, 0. делаете BitmapData.draw() с клипа mcBmp, получившийся потом клип кладёте в mcRotate с теми же координатами, что и mcBmp. mcBmp можно удалить. работает, но в процессе приходится делать доп. клип в библиотеке - муторно.
2. использовать функцию поворота, отн какой-то точки. кладём png в клип в ноль, делаем с него клип через BitmapData.draw() и размещаем там же, потом вертим относительно клипа-"гвоздика" (в случае висящей на стене рамы=)). неудобство - в дополнении к классу-маятнику надо вручную всегда делать "гвоздик".. а хотелось бы без этого. и для поворота придётся считать синусы-косинусы, а можно было бы стандартным rotate)