In the Carbon event model, NPP_SetWindow is called for every redraw. It should be called only when the window geometry has changed. There is an easy workaround: Check for equality of the NPP_SetWindow parameters and the parameters from the previous call before recomputing anything. In PluginViewMac.cpp, there is a call to setNPWindowIfNeeded() inside the paint(...) function. I believe this may be the culprit. Basically, I'm seeing a call to NPP_SetWindow (with the same parameters each time) before each update event, which is completely unnecessary and different from every other browser I'm supporting so far. (Bug reported against Qt version 4.6.2)