diff --git a/components/shared/webrender/display_list.rs b/components/shared/webrender/display_list.rs index e66c3bf8227..635c4fba0f0 100644 --- a/components/shared/webrender/display_list.rs +++ b/components/shared/webrender/display_list.rs @@ -91,7 +91,16 @@ impl ScrollTreeNode { pub fn set_offset(&mut self, new_offset: LayoutVector2D) -> bool { match self.scroll_info { Some(ref mut info) => { - info.offset = new_offset; + let scrollable_width = info.scrollable_size.width; + let scrollable_height = info.scrollable_size.height; + + if scrollable_width > 0. { + info.offset.x = (new_offset.x).min(0.0).max(-scrollable_width); + } + + if scrollable_height > 0. { + info.offset.y = (new_offset.y).min(0.0).max(-scrollable_height); + } true }, _ => false, diff --git a/tests/wpt/meta/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/sticky-content.html.ini b/tests/wpt/meta/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/sticky-content.html.ini deleted file mode 100644 index b391e504aa3..00000000000 --- a/tests/wpt/meta/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/sticky-content.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[sticky-content.html] - expected: FAIL