Expanding picture masks - help

I have been trying to write a picture mask which would mimic an expanding, fading box, exposing a picture underneath of it. I basically have the code, it works, but is excruciatingly slow. I am looking for a setRegistrationPoint function - to set the expansion orientation from the center of the box - or something similar to make this easier. Is there such a thing in AS3?

Here is the kludge.

4hov13


/////////////////////////////////
//////Code for Drawing Button 3

var _loader3:Loader;
var px_scale3:Number = 0.2;
var locX3:Number = 0;
var locY3:Number = 0;
var sizX3:Number;
var sizY3:Number;
var pixsliver3:Number = 0.1;


function Drawing3() {
	_loader3 = new Loader();
	var url3:String = "img/img_3.jpg";
	_loader3.load(new URLRequest(url3));
	_loader3.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoad3);
}
function onImageLoad3(event:Event):void {
	var bitmap3:BitmapData = new BitmapData(_loader3.width, _loader3.height);
	bitmap3.draw(_loader3,new Matrix());
	var matrix3:Matrix = new Matrix();
	matrix3.scale(px_scale3, px_scale3);
	
	sizX3 = _loader3.width * px_scale3;
	sizY3 = _loader3.height * px_scale3;

	var sampleSprite3:Sprite = new Sprite();
	//sampleSprite1.graphics.lineStyle(0, 0x111111);
	sampleSprite3.graphics.beginBitmapFill(bitmap3, matrix3);
	sampleSprite3.graphics.drawRect(locX3, locY3, sizX3, sizY3);
	sampleSprite3.graphics.endFill();
	sampleSprite3.x = 50;
	sampleSprite3.y = 310;
	sampleSprite3.alpha = 0.1;
	addChild(sampleSprite3);
	
	var square3:Sprite = new Sprite();
	square3.graphics.beginFill(0xFF0000);
	square3.graphics.drawRect(locX3, locY3, sizX3 * pixsliver3, sizY3 * pixsliver3);//
	square3.graphics.endFill();
	square3.x = 50 + (sizX3 / 2) - ((sizX3 * pixsliver3)/2) ;
	square3.y = 310 + (sizY3 / 2) - ((sizY3 * pixsliver3)/2) ;
	addChild(square3);

	sampleSprite3.mask = square3;
	
	addEventListener(Event.ENTER_FRAME, onEnterFrame3);
	
	function onEnterFrame3(event:Event):void{
		if (sampleSprite3.height >= square3.height){
			square3.height += (12 * (square3.height/100));
			square3.y -= (6 * (square3.height/100));
			square3.width += (12 * (square3.width/100));
			square3.x -= (6 * (square3.width/100));
			if(sampleSprite3.alpha <= 1){
			sampleSprite3.alpha += 0.08;
			}
		} 
		else {
		removeEventListener(Event.ENTER_FRAME, onEnterFrame3)
		}