Good point. The solution you propose seems cleaner than what I have done. On the other hand, if pointerleave would be relayed by viewport, I do not see any reason to duplicate an event that is being relayed anyway and carries all the information you need. Am I missing something?