diff --git a/libavfilter/vf_overlay.c b/libavfilter/vf_overlay.c
index 06967c2db5b6ed8e2cc12a7aebcc722af53b13a7..6fa10aec8e5e9fa597312fbe20f5a9f232e30907 100644
--- a/libavfilter/vf_overlay.c
+++ b/libavfilter/vf_overlay.c
@@ -452,7 +452,8 @@ static void blend_slice(AVFilterContext *ctx,
                         alpha = (alpha_v + alpha_h) >> 1;
                     } else
                         alpha = a[0];
-                    *d = (*d * (0xff - alpha) + *s++ * alpha + 128) >> 8;
+                    *d = FAST_DIV255(*d * (255 - alpha) + *s * alpha);
+                    s++;
                     d++;
                     a += 1 << hsub;
                 }