diff --git a/src/mol-canvas3d/controls/trackball.ts b/src/mol-canvas3d/controls/trackball.ts
index fc9b7fce064e166176c71e9a3aa2a0d4b6d1d6fc..c6fda8183bf22040675956c8b841c719ab0a5d13 100644
--- a/src/mol-canvas3d/controls/trackball.ts
+++ b/src/mol-canvas3d/controls/trackball.ts
@@ -503,8 +503,10 @@ namespace TrackballControls {
             Vec3.add(camera.position, camera.target, _eye);
             checkDistances();
 
-            if (lastUpdated > 0 && deltaT < 1000) {
-                moveCamera(deltaT);
+            if (lastUpdated > 0) {
+                // clamp the maximum step size at 15 frames to avoid too big jumps
+                // TODO: make this a parameter?
+                moveCamera(Math.min(deltaT, 15 * 1000 / 60));
             }
 
             Vec3.sub(_eye, camera.position, camera.target);