diff --git a/src/server/event.rs b/src/server/event.rs index ea2277c..ba31797 100644 --- a/src/server/event.rs +++ b/src/server/event.rs @@ -472,8 +472,8 @@ pub(super) fn update_surface_viewport( let dims = &window_data.attrs.dims; let size_hints = &window_data.attrs.size_hints; - let width = (dims.width as f64 / scale_factor.0) as i32; - let height = (dims.height as f64 / scale_factor.0) as i32; + let width = (dims.width as f64 / scale_factor.0).ceil() as i32; + let height = (dims.height as f64 / scale_factor.0).ceil() as i32; if width > 0 && height > 0 { viewport.set_destination(width, height); } diff --git a/src/server/tests.rs b/src/server/tests.rs index 68495d0..13492cd 100644 --- a/src/server/tests.rs +++ b/src/server/tests.rs @@ -2300,8 +2300,8 @@ fn fractional_scale_small_popup() { { let data = f.testwl.get_surface_data(toplevel_id).unwrap(); let viewport = data.viewport.as_ref().expect("Missing viewport"); - assert_eq!(viewport.width, 66); - assert_eq!(viewport.height, 66); + assert_eq!(viewport.width, 67); + assert_eq!(viewport.height, 67); } let popup = Window::new(2);