From 1570c38217055d3a2cbff88e7e3fc727aba78ff7 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Thu, 16 Jul 2020 10:37:31 -0700 Subject: [PATCH] Clamp to prevent overflow when interpolating between two gradient stops. Closes #397. --- content/src/gradient.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/content/src/gradient.rs b/content/src/gradient.rs index e475a16c..828f7b86 100644 --- a/content/src/gradient.rs +++ b/content/src/gradient.rs @@ -166,10 +166,8 @@ impl Gradient { return lower_stop.color; } - lower_stop.color - .to_f32() - .lerp(upper_stop.color.to_f32(), (t - lower_stop.offset) / denom) - .to_u8() + let ratio = ((t - lower_stop.offset) / denom).min(1.0); + lower_stop.color.to_f32().lerp(upper_stop.color.to_f32(), ratio).to_u8() } #[inline]