fix Viewport to use own Color and Rect classes, add Plane class