This shows how you can compensate for any aspect ratio.
Graphics3D 640,480,0,2 SetBuffer BackBuffer() clipx = 208 clipy = 48 clipw = 384 cliph = 384 origzoom# = 1.0 origclipw# = clipw camera = CreateCamera() For i = 0 To 10 m = CreateCube() PositionEntity m,Rnd(-10,10),Rnd(-10,10),Rnd(10,50) Next For i = 0 To 10 m = CreateSphere() PositionEntity m,Rnd(-10,10),Rnd(-10,10),Rnd(10,50) Next Repeat If MouseDown(1) If MouseX()-clipx>10 Then clipw = MouseX()-clipx If MouseY()-clipy>10 Then cliph = MouseY()-clipy EndIf If MouseDown(2) clipw = clipw+(clipx-MouseX()) cliph = cliph+(clipy-MouseY()) clipx = MouseX() clipy = MouseY() EndIf Cls ; Compensate for viewport aspect! zoom# = origzoom#*(origclipw/clipw) Rect clipx-1,clipy-1,clipw+2,cliph+2,False CameraViewport camera,clipx,clipy,clipw,cliph CameraZoom camera,zoom RenderWorld Text GraphicsWidth()/2,0,"Left MB - Set Top Left ("+clipx+","+clipy+") | Right MB - Set Bottom Right ("+(clipx+clipw)+","+(clipy+cliph)+")",True,False Flip Until KeyHit(1)