sqrt я делаю сразу же при загрузке и потом с этим изображением работаю далее.
Как то так:

Код AS3:
private function makeValidBitmapData($bitmapData:BitmapData):BitmapData // тут ужимаем нашу битмапу до нужных размеров для передачи и отдаем новую
{
if ($bitmapData.width <= ApplicationData.BIG_PIC_SIZE && $bitmapData.height <= ApplicationData.BIG_PIC_SIZE)
return $bitmapData.clone(); // если фото итак подходит, то возвращем его же
var myMatrix :Matrix = new Matrix(); // матрица преобразований, будим крутить и перемещать фотку
var coefW :Number = ApplicationData.BIG_PIC_SIZE / $bitmapData.width;
var coefH :Number = ApplicationData.BIG_PIC_SIZE / $bitmapData.height;
var multiplier :Number;
if (coefW > coefH) { multiplier = coefH; } // если фотка горизонтальная
else { multiplier = coefW; } // если вертикальная или квдарат)
myMatrix.createBox(multiplier, multiplier, 0, 0, 0);//scaleX,scaleY,rotation,x,y вот интересная фишка!!
var newBitmapData:BitmapData = new BitmapData(multiplier * $bitmapData.width, multiplier * $bitmapData.height, true, 0xFFFFFF);// делаем новую битмапу, сюда срисуем все
newBitmapData.draw($bitmapData, myMatrix , null, null, null, true); // срисовываем
return newBitmapData;
}