diff --git a/libavcodec/g726.c b/libavcodec/g726.c
index 88f7cee38041ad9c8c6a21cb9f8393d23625769d..6086e389aaaa2433c5aa9b7a0e41c455fcce7769 100644
--- a/libavcodec/g726.c
+++ b/libavcodec/g726.c
@@ -52,8 +52,8 @@ static inline int16_t mult(Float11* f1, Float11* f2)
         int res, exp;
 
         exp = f1->exp + f2->exp;
-        res = (((f1->mant * f2->mant) + 0x30) >> 4) << 7;
-        res = exp > 26 ? res << (exp - 26) : res >> (26 - exp);
+        res = (((f1->mant * f2->mant) + 0x30) >> 4);
+        res = exp > 19 ? res << (exp - 19) : res >> (19 - exp);
         return (f1->sign ^ f2->sign) ? -res : res;
 }