На 99% реализовал редровинг, чтоб всё намалёванное можно было стереть и вернуть картинки прежний вид. Редровинг пашет, когда картинку берём из библиотеки, а когда картинку грузим, не хочет работать.
В коде есть закомментированный код, если его разкоментить то картинка будет грузиться из библиотеки.

Код AS1/AS2:
var myBrush;
var brushSize = 40;
var brushoffset = brushSize/2;
var myPoint = new flash.geom.Point(0, 0);
var myMatrix = new flash.geom.Matrix();
var brushcolor = new flash.geom.ColorTransform();
brushcolor.alphaMultiplier = 0.3;
var mcl:MovieClipLoader = new MovieClipLoader();
mcl.addListener(this);
drw.createEmptyMovieClip("container",this.getNextHighestDepth());
mcl.loadClip("blue-box-car.jpg",drw.container);
function onLoadInit(source_mc:MovieClip):Void
{
drawbmp = new flash.display.BitmapData(source_mc._width, source_mc._height, true, 0);
drawbmp.draw(source_mc);
startSmudge();
}
function startSmudge()
{
//Вытащенную картинку из библиотеки мы можем вернуть в прежнее состояние.
/*var source_mc = flash.display.BitmapData.loadBitmap("blue-box-car");
var drawbmp = new flash.display.BitmapData(source_mc.width, source_mc.height, true, 0);
drawbmp.draw(source_mc);*/
var smudgebmp = new flash.display.BitmapData(brushSize, brushSize, true, 0);
var smudgeimgbmp = smudgebmp.clone();
var redrawbmp = smudgebmp.clone();
drw.container._x = 84;
drw.container.attachBitmap(drawbmp, 1);
smudge_btn.onPress = function(){
myBrush = "smudge";
}
redraw_btn.onPress = function(){
myBrush = "redraw";
}
function go(shape_mc){
smudgebmp.fillRect(smudgebmp.rectangle, 0);
smudgebmp.draw(shape_mc, myMatrix, brushcolor);
redrawbmp.fillRect(redrawbmp.rectangle, 0);
redrawbmp.draw(shape_mc);
}
drw.container.onPress = function(){
if (myBrush == "smudge") this.onMouseMove = brushMouseMove;
else if (myBrush == "redraw") this.onMouseMove = brushRedrawMouseMove;
this.onMouseMove(true);
}
drw.container.onRelease = drw.container.onReleaseOutside = function(){
delete this.onMouseMove;
}
function brushMouseMove(ignoreimage){
var offset = new flash.geom.Point(drw.container._xmouse - brushoffset, drw.container._ymouse - brushoffset);
var drawRect = new flash.geom.Rectangle(offset.x, offset.y, brushSize, brushSize);
if (!ignoreimage){
drawbmp.copyPixels(smudgeimgbmp, smudgeimgbmp.rectangle, offset, smudgebmp, myPoint, true);
}
smudgeimgbmp.copyPixels(drawbmp, drawRect, myPoint);
updateAfterEvent();
}
function brushRedrawMouseMove(){
var offset = new flash.geom.Point(drw.container._xmouse - brushoffset, drw.container._ymouse - brushoffset);
var drawRect = new flash.geom.Rectangle(offset.x, offset.y, brushSize, brushSize);
//!Вот здесь косяг
drawbmp.copyPixels(source_mc, drawRect, offset, redrawbmp, myPoint, true);
//!
updateAfterEvent();
}
smudge_btn.onPress();
go(brush);
}