You are making an important assumption here: that the current glViewport is the bounding rectangle of the top-level ViewBox. I can come up with many use cases where that will not be true.