looking over your code, i found some things
but the biggest problem is that the real zoom change is not handled
watching only mouse wheel is insufficient,
there are many other operations which change the zoom level. (including all the zoom mods)
as you have surely noticed LuaPlayer.zoom is not readable you can only guess the zoom level. Maybe an additional API change request in forum can help that Wube finally implements it.