 diff --git a/clutter/clutter-alpha.c b/clutter/clutter-alpha.c
-index 3e4df4d..74a5c7a 100644
+index 3e4df4d..d508631 100644
 --- a/clutter/clutter-alpha.c
 +++ b/clutter/clutter-alpha.c
 @@ -694,6 +694,11 @@ clutter_ramp_func (ClutterAlpha *alpha,

   n_frames = clutter_timeline_get_n_frames (timeline);
 
-  x = 256 * frame / n_frames;
-
-  sine = sinf (x) * CLUTTER_ALPHA_MAX_ALPHA;
+  radians = ((float)frame / n_frames) * (G_PI / 2);
+  sine = sinf (radians);
 
-  return ((guint32) sine) >> COGL_FIXED_Q;
+  return (guint32) (sine * CLUTTER_ALPHA_MAX_ALPHA);
 }
 
 /**
@@ -1031,18 +1041,17 @@ clutter_sine_in_out_func (ClutterAlpha *alpha,
   ClutterTimeline *timeline;
   gint             frame;
   gint             n_frames;

   
   timeline = clutter_alpha_get_timeline (alpha);
   frame    = clutter_timeline_get_current_frame (timeline);
@@ -1262,7 +1280,7 @@ clutter_exp_dec_func (ClutterAlpha *alpha,
 
   x =  (x_alpha_max * (n_frames - frame)) / n_frames;
 
