diff --git a/Libraries/LibWeb/Layout/FlexFormattingContext.cpp b/Libraries/LibWeb/Layout/FlexFormattingContext.cpp
index 760a6a524ca..4629d4c9246 100644
--- a/Libraries/LibWeb/Layout/FlexFormattingContext.cpp
+++ b/Libraries/LibWeb/Layout/FlexFormattingContext.cpp
@@ -1137,7 +1137,7 @@ void FlexFormattingContext::determine_hypothetical_cross_size_of_item(FlexItem&
}
if (item.box->has_preferred_aspect_ratio()) {
- if (item.used_flex_basis_is_definite) {
+ if (item.used_flex_basis_is_definite || (item.box->has_natural_width() && item.box->has_natural_height())) {
item.hypothetical_cross_size = calculate_cross_size_from_main_size_and_aspect_ratio(item.main_size.value(), item.box->preferred_aspect_ratio().value());
return;
}
diff --git a/Tests/LibWeb/Layout/expected/flex/flex-item-with-intrinsic-aspect-ratio-and-max-height.txt b/Tests/LibWeb/Layout/expected/flex/flex-item-with-intrinsic-aspect-ratio-and-max-height.txt
index b55ef562afd..59d3e5cfa9d 100644
--- a/Tests/LibWeb/Layout/expected/flex/flex-item-with-intrinsic-aspect-ratio-and-max-height.txt
+++ b/Tests/LibWeb/Layout/expected/flex/flex-item-with-intrinsic-aspect-ratio-and-max-height.txt
@@ -1,14 +1,14 @@
Viewport <#document> at (0,0) content-size 800x600 children: not-inline
BlockContainer at (1,1) content-size 798x69.984375 [BFC] children: not-inline
Box
at (10,10) content-size 780x51.984375 flex-container(row) [FFC] children: not-inline
- ImageBox
at (11,10) content-size 66.65625x50 flex-item children: not-inline
+ ImageBox
at (11,11) content-size 66.65625x49.984375 flex-item children: not-inline
BlockContainer <(anonymous)> (not painted) [BFC] children: inline
TextNode <#text>
ViewportPaintable (Viewport<#document>) [0,0 800x600]
PaintableWithLines (BlockContainer) [0,0 800x71.984375]
PaintableBox (Box) [9,9 782x53.984375]
- ImagePaintable (ImageBox
) [10,9 68.65625x52]
+ ImagePaintable (ImageBox
) [10,10 68.65625x51.984375]
SC for Viewport<#document> [0,0 800x600] [children: 1] (z-index: auto)
SC for BlockContainer [1,1 798x69.984375] [children: 0] (z-index: auto)
diff --git a/Tests/LibWeb/Text/expected/flex-container-with-oversized-replaced-element.txt b/Tests/LibWeb/Text/expected/flex-container-with-oversized-replaced-element.txt
new file mode 100644
index 00000000000..f513c67b27c
--- /dev/null
+++ b/Tests/LibWeb/Text/expected/flex-container-with-oversized-replaced-element.txt
@@ -0,0 +1,3 @@
+Natural height of image (400px) should be same as computed height (400px).
+Natural width of image (200px) should be same as computed width (200px).
+Computed height of image (400px) should be larger than computed height of container (200px).
diff --git a/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/flex-aspect-ratio-img-row-005.txt b/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/flex-aspect-ratio-img-row-005.txt
index 54c4e3b69e0..a06fa57038e 100644
--- a/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/flex-aspect-ratio-img-row-005.txt
+++ b/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/flex-aspect-ratio-img-row-005.txt
@@ -2,9 +2,8 @@ Harness status: OK
Found 4 tests
-3 Pass
-1 Fail
+4 Pass
Pass img 1
Pass img 2
Pass img 3
-Fail img 4
\ No newline at end of file
+Pass img 4
\ No newline at end of file
diff --git a/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-001.txt b/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-001.txt
index 19f85f2623b..58de06ef22f 100644
--- a/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-001.txt
+++ b/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-001.txt
@@ -2,20 +2,20 @@ Harness status: OK
Found 18 tests
-5 Pass
-13 Fail
-Fail .flexbox > img 1
+14 Pass
+4 Fail
+Pass .flexbox > img 1
Pass .flexbox > img 2
Pass .flexbox > img 3
Pass .flexbox > img 4
-Fail .flexbox > img 5
-Fail .flexbox > img 6
-Fail .flexbox > img 7
-Fail .flexbox > img 8
-Fail .flexbox > img 9
-Fail .flexbox > img 10
-Fail .flexbox > img 11
-Fail .flexbox > img 12
+Pass .flexbox > img 5
+Pass .flexbox > img 6
+Pass .flexbox > img 7
+Pass .flexbox > img 8
+Pass .flexbox > img 9
+Pass .flexbox > img 10
+Pass .flexbox > img 11
+Pass .flexbox > img 12
Fail .flexbox > img 13
Fail .flexbox > img 14
Pass .flexbox > img 15
diff --git a/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-001v.txt b/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-001v.txt
index 19f85f2623b..58de06ef22f 100644
--- a/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-001v.txt
+++ b/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-001v.txt
@@ -2,20 +2,20 @@ Harness status: OK
Found 18 tests
-5 Pass
-13 Fail
-Fail .flexbox > img 1
+14 Pass
+4 Fail
+Pass .flexbox > img 1
Pass .flexbox > img 2
Pass .flexbox > img 3
Pass .flexbox > img 4
-Fail .flexbox > img 5
-Fail .flexbox > img 6
-Fail .flexbox > img 7
-Fail .flexbox > img 8
-Fail .flexbox > img 9
-Fail .flexbox > img 10
-Fail .flexbox > img 11
-Fail .flexbox > img 12
+Pass .flexbox > img 5
+Pass .flexbox > img 6
+Pass .flexbox > img 7
+Pass .flexbox > img 8
+Pass .flexbox > img 9
+Pass .flexbox > img 10
+Pass .flexbox > img 11
+Pass .flexbox > img 12
Fail .flexbox > img 13
Fail .flexbox > img 14
Pass .flexbox > img 15
diff --git a/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-002.txt b/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-002.txt
index c739e945e26..b6da3866cad 100644
--- a/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-002.txt
+++ b/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-002.txt
@@ -2,20 +2,20 @@ Harness status: OK
Found 18 tests
-5 Pass
-13 Fail
-Fail .flexbox > img 1
+14 Pass
+4 Fail
+Pass .flexbox > img 1
Pass .flexbox > img 2
Pass .flexbox > img 3
Pass .flexbox > img 4
-Fail .flexbox > img 5
-Fail .flexbox > img 6
-Fail .flexbox > img 7
-Fail .flexbox > img 8
-Fail .flexbox > img 9
-Fail .flexbox > img 10
-Fail .flexbox > img 11
-Fail .flexbox > img 12
+Pass .flexbox > img 5
+Pass .flexbox > img 6
+Pass .flexbox > img 7
+Pass .flexbox > img 8
+Pass .flexbox > img 9
+Pass .flexbox > img 10
+Pass .flexbox > img 11
+Pass .flexbox > img 12
Fail .flexbox > img 13
Fail .flexbox > img 14
Fail .flexbox > img 15
diff --git a/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-002v.txt b/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-002v.txt
index c739e945e26..b6da3866cad 100644
--- a/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-002v.txt
+++ b/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-002v.txt
@@ -2,20 +2,20 @@ Harness status: OK
Found 18 tests
-5 Pass
-13 Fail
-Fail .flexbox > img 1
+14 Pass
+4 Fail
+Pass .flexbox > img 1
Pass .flexbox > img 2
Pass .flexbox > img 3
Pass .flexbox > img 4
-Fail .flexbox > img 5
-Fail .flexbox > img 6
-Fail .flexbox > img 7
-Fail .flexbox > img 8
-Fail .flexbox > img 9
-Fail .flexbox > img 10
-Fail .flexbox > img 11
-Fail .flexbox > img 12
+Pass .flexbox > img 5
+Pass .flexbox > img 6
+Pass .flexbox > img 7
+Pass .flexbox > img 8
+Pass .flexbox > img 9
+Pass .flexbox > img 10
+Pass .flexbox > img 11
+Pass .flexbox > img 12
Fail .flexbox > img 13
Fail .flexbox > img 14
Fail .flexbox > img 15
diff --git a/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-007.txt b/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-007.txt
index 19f85f2623b..b9267f8b609 100644
--- a/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-007.txt
+++ b/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-007.txt
@@ -2,20 +2,20 @@ Harness status: OK
Found 18 tests
-5 Pass
-13 Fail
-Fail .flexbox > img 1
+9 Pass
+9 Fail
+Pass .flexbox > img 1
Pass .flexbox > img 2
Pass .flexbox > img 3
Pass .flexbox > img 4
-Fail .flexbox > img 5
+Pass .flexbox > img 5
Fail .flexbox > img 6
Fail .flexbox > img 7
Fail .flexbox > img 8
-Fail .flexbox > img 9
+Pass .flexbox > img 9
Fail .flexbox > img 10
Fail .flexbox > img 11
-Fail .flexbox > img 12
+Pass .flexbox > img 12
Fail .flexbox > img 13
Fail .flexbox > img 14
Pass .flexbox > img 15
diff --git a/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-007v.txt b/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-007v.txt
index 19f85f2623b..b9267f8b609 100644
--- a/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-007v.txt
+++ b/Tests/LibWeb/Text/expected/wpt-import/css/css-flexbox/image-as-flexitem-size-007v.txt
@@ -2,20 +2,20 @@ Harness status: OK
Found 18 tests
-5 Pass
-13 Fail
-Fail .flexbox > img 1
+9 Pass
+9 Fail
+Pass .flexbox > img 1
Pass .flexbox > img 2
Pass .flexbox > img 3
Pass .flexbox > img 4
-Fail .flexbox > img 5
+Pass .flexbox > img 5
Fail .flexbox > img 6
Fail .flexbox > img 7
Fail .flexbox > img 8
-Fail .flexbox > img 9
+Pass .flexbox > img 9
Fail .flexbox > img 10
Fail .flexbox > img 11
-Fail .flexbox > img 12
+Pass .flexbox > img 12
Fail .flexbox > img 13
Fail .flexbox > img 14
Pass .flexbox > img 15
diff --git a/Tests/LibWeb/Text/input/flex-container-with-oversized-replaced-element.html b/Tests/LibWeb/Text/input/flex-container-with-oversized-replaced-element.html
new file mode 100644
index 00000000000..c24651cef59
--- /dev/null
+++ b/Tests/LibWeb/Text/input/flex-container-with-oversized-replaced-element.html
@@ -0,0 +1,30 @@
+
+
+
+
+

+
+