diff options
Diffstat (limited to 'components')
-rw-r--r-- | components/gfx/display_list/mod.rs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/components/gfx/display_list/mod.rs b/components/gfx/display_list/mod.rs index ec3173cb847..af4b793c6b2 100644 --- a/components/gfx/display_list/mod.rs +++ b/components/gfx/display_list/mod.rs @@ -182,7 +182,14 @@ impl DisplayList { *client_point } else { let point = *translated_point - stacking_context.bounds.origin; - let inv_transform = stacking_context.transform.inverse().unwrap(); + let inv_transform = match stacking_context.transform.inverse() { + Some(transform) => transform, + None => { + // If a transform function causes the current transformation matrix of an object + // to be non-invertible, the object and its content do not get displayed. + return; + } + }; let frac_point = inv_transform.transform_point(&Point2D::new(point.x.to_f32_px(), point.y.to_f32_px())); Point2D::new(Au::from_f32_px(frac_point.x), Au::from_f32_px(frac_point.y)) |