1. Du setzt beim Hereinzoomen Image1.Top nicht - daran könnte es liegen.
Da du sowiso schon eine Varibale factor hast (ich vermute mal, die gibt den Faktor an, also 1 = reale Größe, 2 = doppelt so groß wie normal)
Dann würde ich einfach im Keypress den Faktor verändern und danach das hier machen:
Delphi-Quellcode:
Image1.Height := realheight * factor;
Image1. Width := realwidth * factor;
Image1.Top := (Form.Height - Image1.Height) div 2;
Image1.Left := (Form.Width - Image1.Width) div 2;
Btw.: Ich fände es intuitiver wenn das Programm statt immer in die Mitte, zum Mauszeiger zoomen würde ... und zwar so, dass der Punkt unter dem Mauszeiger der gleiche bleibt