A ver te pongo el codigo que yo utilizo y me funciona perfectamente:
Creo dos variables al cargar la imgen, tipo Integer, almacenando el Ancho y el Alto de la imagen original...
Un componente TImagen, con las propiedades
Código:
Autosize := False;
Strethc := True;
Proportional := True;
en el FormShow: (Con la imagen ya cargada en el picture)
Código:
Imagen.AutoSize := True;
Alto := Imagen.Width;
Ancho := Imagen.Height;
Despues le he puesto un slider (Zoom) y un Label (xzoom) y en el onchange del slider este codigo:
Código:
Imagen.AutoSize := False;
Imagen.Height := Round(Ancho * (Zoom.Value/100) );
Imagen.Width := Round(Alto * (Zoom.Value / 100) );
xzoom.Caption := '>> ZOOM ' + IntToStr(Zoom.Value) + ' % <<';
Pruebalo y me cuentas, a mi me funciona...