diff --git a/components/style/values/specified/mod.rs b/components/style/values/specified/mod.rs index dd34f9bdbeb..158c33a5b6a 100644 --- a/components/style/values/specified/mod.rs +++ b/components/style/values/specified/mod.rs @@ -563,7 +563,14 @@ impl ToComputedValue for Opacity { #[inline] fn to_computed_value(&self, context: &Context) -> CSSFloat { - self.0.to_computed_value(context).min(1.0).max(0.0) + let value = self.0.to_computed_value(context); + if context.for_smil_animation { + // SMIL expects to be able to interpolate between out-of-range + // opacity values. + value + } else { + value.min(1.0).max(0.0) + } } #[inline]