Implemented viewport to abstract scaling and rotation of the screen, map now calls viewport.viewcontext to get the appropriate context;