вот как работает
http://cyberua.16mb.com/files/zoom.html
вот функция
function fixedZoom () {
var zoomY = getHeight /(getHeight - step.height);
var zoomX = getWidth / (getWidth - step.width);
var left = ((getWidth - step.width) - (getWidth * zoomX))/2;
var top = ((getHeight - step.height) - (getHeight * zoomY))/2;
wrapper.css({
top: top + 'px',
left: left+'px'
})
}