Вот что у меня получилось:

Код AS3:
[Embed(source = "./lupa.pbj",mimeType = "application/octet-stream")]
var Lupa:Class;
var shader:Shader = new Shader(new Lupa() as ByteArray);
var filter:ShaderFilter = new ShaderFilter(shader);
shader.data.magnification.value = [magnification.value / 100];
shader.data.outerRadius.value = [outerRadius.value];
shader.data.center2.value = [center21.value,center22.value];
shader.data.center.value = [sprite.mouseX,sprite.mouseY];
sprite.filters = [filter];
function lupaMove(e:MouseEvent):void {
shader.data.magnification.value = [magnification.value / 100];
shader.data.outerRadius.value = [outerRadius.value];
shader.data.center2.value = [center21.value,center22.value];
shader.data.center.value = [sprite.mouseX,sprite.mouseY];
sprite.filters = [filter];
}
stage.addEventListener(MouseEvent.MOUSE_MOVE, lupaMove);
Делаете спрайт размером таким чтобы чёткость увеличения соответствовала необходимым требованиям лупы и затем шейдером уменьшаете и центруете до необходимого размера

не забываем говорить спасибо
upd: небольшие исправления.
Исходники: