diff --git a/clutter/clutter-timeline.c b/clutter/clutter-timeline.c
index a2db02f..9a54682 100644
--- a/clutter/clutter-timeline.c
+++ b/clutter/clutter-timeline.c
@@ -602,6 +602,10 @@ clutter_timeline_do_frame (ClutterTimeline *timeline)
                      timeline,
                      (long) priv->elapsed_time);
 
+  /* Clamp msecs_delta to the minimum acceptable frame-rate */
+  priv->msecs_delta = MIN (priv->msecs_delta,
+                           1000 / (clutter_get_default_frame_rate () / 4));
+
   /* Advance time */
   if (priv->direction == CLUTTER_TIMELINE_FORWARD)
     priv->elapsed_time += priv->msecs_delta;

