diff --git a/crates/bevy_ui/src/widget/image.rs b/crates/bevy_ui/src/widget/image.rs index 43df6aaeeb..55fb343737 100644 --- a/crates/bevy_ui/src/widget/image.rs +++ b/crates/bevy_ui/src/widget/image.rs @@ -279,10 +279,15 @@ pub fn update_image_content_size_system( continue; } - if let Some(size) = match &image.texture_atlas { - Some(atlas) => atlas.texture_rect(&atlases).map(|t| t.size()), - None => textures.get(&image.image).map(Image::size), - } { + if let Some(size) = + image + .rect + .map(|rect| rect.size().as_uvec2()) + .or_else(|| match &image.texture_atlas { + Some(atlas) => atlas.texture_rect(&atlases).map(|t| t.size()), + None => textures.get(&image.image).map(Image::size), + }) + { // Update only if size or scale factor has changed to avoid needless layout calculations if size != image_size.size || combined_scale_factor != *previous_combined_scale_factor