.bar) [105,5 100x50]
diff --git a/Tests/LibWeb/Layout/input/block-and-inline/inline-block-with-negative-margin-left.html b/Tests/LibWeb/Layout/input/block-and-inline/inline-block-with-negative-margin-left.html
new file mode 100644
index 0000000000..f4d5e1bda9
--- /dev/null
+++ b/Tests/LibWeb/Layout/input/block-and-inline/inline-block-with-negative-margin-left.html
@@ -0,0 +1,23 @@
+
\ No newline at end of file
diff --git a/Tests/LibWeb/Layout/input/block-and-inline/inline-block-with-negative-margin-right.html b/Tests/LibWeb/Layout/input/block-and-inline/inline-block-with-negative-margin-right.html
new file mode 100644
index 0000000000..b02d3caab2
--- /dev/null
+++ b/Tests/LibWeb/Layout/input/block-and-inline/inline-block-with-negative-margin-right.html
@@ -0,0 +1,23 @@
+
\ No newline at end of file
diff --git a/Userland/Libraries/LibWeb/Layout/InlineFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/InlineFormattingContext.cpp
index 98c2584a89..127f212934 100644
--- a/Userland/Libraries/LibWeb/Layout/InlineFormattingContext.cpp
+++ b/Userland/Libraries/LibWeb/Layout/InlineFormattingContext.cpp
@@ -275,7 +275,12 @@ void InlineFormattingContext::generate_line_boxes(LayoutMode layout_mode)
auto& box = verify_cast
(*item.node);
compute_inset(box);
if (containing_block().computed_values().white_space() != CSS::WhiteSpace::Nowrap) {
- line_builder.break_if_needed(item.border_box_width());
+ auto minimum_space_needed_on_line = item.border_box_width();
+ if (item.margin_start < 0)
+ minimum_space_needed_on_line += item.margin_start;
+ if (item.margin_end < 0)
+ minimum_space_needed_on_line += item.margin_end;
+ line_builder.break_if_needed(minimum_space_needed_on_line);
}
line_builder.append_box(box, item.border_start + item.padding_start, item.padding_end + item.border_end, item.margin_start, item.margin_end);
break;