diff --git a/src/backend/render/cursor.rs b/src/backend/render/cursor.rs index a27fdf57..a3d055fd 100644 --- a/src/backend/render/cursor.rs +++ b/src/backend/render/cursor.rs @@ -209,8 +209,9 @@ where _: Option>, ) -> Vec> { if self.new_frame { + let scale = scale.into(); vec![Rectangle::from_loc_and_size( - (0, 0), + self.position.to_physical(scale).to_i32_round(), self.size.to_physical_precise_round(scale), )] } else { @@ -234,13 +235,17 @@ where damage: &[Rectangle], _log: &slog::Logger, ) -> Result<(), ::Error> { + let scale = scale.into(); frame.render_texture_at( &self.texture, position.to_i32_round(), 1, scale, Transform::Normal, - damage, + &damage.iter().copied().map(|mut rect| { + rect.loc -= self.position.to_physical(scale).to_i32_round(); + rect + }).collect::>(), 1.0, )?; Ok(())