Updated OP with the new version.

Added a sort of smooth zoom. Internally the zoom is still changed in steps, but transition between steps appear smooth. I think it is the best approach, because "stepless" zoom has a drawback that you can't reliably set the same zoom value. However you can set the step to be as small as 1% which will give you the smoothest zoom, albeit slow.

Also various settings are available in d3d8.ini for those who want to tweak them.