@@ -1060,9 +1060,8 @@ impl<'a, R: femtovg::Renderer + TextureImporter> GLItemRenderer<'a, R> {
10601060 } ) ;
10611061
10621062 let cache_entry = self . graphics_cache . get_or_update_cache_entry ( item_rc, || {
1063- let bounding_rect = layer_bounding_rect_fn ( ) ;
1064- let origin = bounding_rect. origin * self . scale_factor ;
1065- let size = ( bounding_rect. size * self . scale_factor ) . ceil ( ) . try_cast ( ) ?;
1063+ let bounding_rect = ( layer_bounding_rect_fn ( ) * self . scale_factor ) . round_out ( ) ;
1064+ let size = bounding_rect. size . cast ( ) ;
10661065
10671066 let layer_image = existing_layer_texture
10681067 . and_then ( |layer_texture| {
@@ -1094,11 +1093,11 @@ impl<'a, R: femtovg::Renderer + TextureImporter> GLItemRenderer<'a, R> {
10941093
10951094 canvas. clear_rect ( 0 , 0 , size. width , size. height , femtovg:: Color :: rgba ( 0 , 0 , 0 , 0 ) ) ;
10961095
1097- canvas. translate ( -origin. x , -origin. y ) ;
1096+ canvas. translate ( -bounding_rect . origin . x , -bounding_rect . origin . y ) ;
10981097 }
10991098
11001099 * self . state . last_mut ( ) . unwrap ( ) = State {
1101- scissor : bounding_rect,
1100+ scissor : bounding_rect / self . scale_factor ,
11021101 global_alpha : 1. ,
11031102 current_render_target : layer_image. as_render_target ( ) ,
11041103 } ;
@@ -1119,7 +1118,10 @@ impl<'a, R: femtovg::Renderer + TextureImporter> GLItemRenderer<'a, R> {
11191118 canvas. set_render_target ( previous_render_target) ;
11201119 }
11211120
1122- Some ( ItemGraphicsCacheEntry :: TextureWithOrigin { texture : layer_image, origin } )
1121+ Some ( ItemGraphicsCacheEntry :: TextureWithOrigin {
1122+ texture : layer_image,
1123+ origin : bounding_rect. origin ,
1124+ } )
11231125 } ) ;
11241126
11251127 cache_entry. and_then ( |item_cache_entry| match item_cache_entry {
0 commit comments