It is too rough to double or halve the magnification with a single zoom decision.
It should be at least √2x or √√2x. ( Best would be for the user to be change-able this factor, or for it to be change-able scripting. )
These values would make zooming smoother while maintaining the current 100% -> 200% -> 400% movement.