getViewport() no returns a copy of the viewport instead of the actual viewport object
setViewport() copies the new viewport into the existing viewport rather than using the reference

The above changes are needed to keep the viewport private and valid