You wouldn't have this problem if instead of centering the zoomable canvas, you'd show it at coords in the top left part of its parent.
Alternatively you could calculate the needed coordinates, based on the size of its parent, and not let them drop below 0.
Here's code that will help:
private function calculateCoordinates() : void
{
var x : Number = (canvas.width - layout_cnv.width) / 2;
x = x < 0 ? 0 : x;
var y : Number = (canvas.height - layout_cnv.height) / 2;
y = y < 0 ? 0 : y;
layout_cnv.move(x, y);
}
All you have to do is add this method to your application and
this.callLater(calculateCoordinates);
at the end of your changeZoom and adjustDefaultZoom methods. Also remove align properties from layout_cnv.