.lower) [8,208 200x17]
+ TextPaintable (TextNode<#text>)
diff --git a/Tests/LibWeb/Layout/input/flex/space-between-with-negative-remaining-space-on-line.html b/Tests/LibWeb/Layout/input/flex/space-between-with-negative-remaining-space-on-line.html
new file mode 100644
index 0000000000..715368fc06
--- /dev/null
+++ b/Tests/LibWeb/Layout/input/flex/space-between-with-negative-remaining-space-on-line.html
@@ -0,0 +1,29 @@
+
whf
diff --git a/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp
index 2746a5660b..f5e9e456c0 100644
--- a/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp
+++ b/Userland/Libraries/LibWeb/Layout/FlexFormattingContext.cpp
@@ -1230,11 +1230,11 @@ void FlexFormattingContext::distribute_any_remaining_free_space()
initial_offset = 0;
}
if (flex_line.remaining_free_space.has_value() && number_of_items > 1)
- space_between_items = flex_line.remaining_free_space.value() / (number_of_items - 1);
+ space_between_items = max(CSSPixels(0), flex_line.remaining_free_space.value() / (number_of_items - 1));
break;
case CSS::JustifyContent::SpaceAround:
if (flex_line.remaining_free_space.has_value())
- space_between_items = flex_line.remaining_free_space.value() / number_of_items;
+ space_between_items = max(CSSPixels(0), flex_line.remaining_free_space.value() / number_of_items);
if (is_direction_reverse()) {
initial_offset = inner_main_size(m_flex_container_state) - space_between_items / 2;
} else {
@@ -1243,7 +1243,7 @@ void FlexFormattingContext::distribute_any_remaining_free_space()
break;
case CSS::JustifyContent::SpaceEvenly:
if (flex_line.remaining_free_space.has_value())
- space_between_items = flex_line.remaining_free_space.value() / (number_of_items + 1);
+ space_between_items = max(CSSPixels(0), flex_line.remaining_free_space.value() / (number_of_items + 1));
if (is_direction_reverse()) {
initial_offset = inner_main_size(m_flex_container_state) - space_between_items;
} else {