diff --git a/src/gui/painting/qcolortransferfunction_p.h b/src/gui/painting/qcolortransferfunction_p.h index b9a09b4646a..3ae2fdd410d 100644 --- a/src/gui/painting/qcolortransferfunction_p.h +++ b/src/gui/painting/qcolortransferfunction_p.h @@ -56,7 +56,8 @@ public: if (x < m_d) return m_c * x + m_f; float t = std::pow(m_a * x + m_b, m_g); - if (std::isfinite(t)) + // Avoid NaN math, and leave room to multiply with 65280 and store in an int. + if (std::isfinite(t) && t > std::numeric_limits::min() && t < std::numeric_limits::max()) return t + m_e; if (t > 0.f) return 1.f;