@@ -141,8 +141,11 @@ pub fn define_glk_or_mtk_view(superclass: &Class) -> *const Class {
141141 let mut ios_pos: NSPoint = msg_send ! [ ios_touch, locationInView: this] ;
142142
143143 if native_display ( ) . lock ( ) . unwrap ( ) . high_dpi {
144- ios_pos. x *= 2. ;
145- ios_pos. y *= 2. ;
144+ let main_screen: ObjcId = msg_send ! [ class!( UIScreen ) , mainScreen] ;
145+ let scale: f64 = msg_send ! [ main_screen, scale] ;
146+
147+ ios_pos. x *= scale;
148+ ios_pos. y *= scale;
146149 } else {
147150 let content_scale_factor: f64 = msg_send ! [ this, contentScaleFactor] ;
148151 ios_pos. x *= content_scale_factor;
@@ -317,9 +320,11 @@ pub fn define_glk_or_mtk_view_dlg(superclass: &Class) -> *const Class {
317320 let high_dpi = native_display ( ) . lock ( ) . unwrap ( ) . high_dpi ;
318321
319322 let ( screen_width, screen_height) = if high_dpi {
323+ let scale: f64 = unsafe { msg_send ! [ main_screen, scale] } ;
324+
320325 (
321- screen_rect. size . width as i32 * 2 ,
322- screen_rect. size . height as i32 * 2 ,
326+ ( screen_rect. size . width * scale ) as i32 ,
327+ ( screen_rect. size . height * scale ) as i32 ,
323328 )
324329 } else {
325330 let content_scale_factor: f64 = unsafe { msg_send ! [ payload. view, contentScaleFactor] } ;
@@ -414,7 +419,10 @@ unsafe fn create_opengl_view(screen_rect: NSRect, _sample_count: i32, high_dpi:
414419 msg_send_ ! [ glk_view_obj, setUserInteractionEnabled: YES ] ;
415420 msg_send_ ! [ glk_view_obj, setMultipleTouchEnabled: YES ] ;
416421 if high_dpi {
417- msg_send_ ! [ glk_view_obj, setContentScaleFactor: 2.0 ] ;
422+ let main_screen: ObjcId = msg_send ! [ class!( UIScreen ) , mainScreen] ;
423+ let scale: f64 = msg_send ! [ main_screen, scale] ;
424+
425+ msg_send_ ! [ glk_view_obj, setContentScaleFactor: scale] ;
418426 } else {
419427 msg_send_ ! [ glk_view_obj, setContentScaleFactor: 1.0 ] ;
420428 }
@@ -486,9 +494,11 @@ pub fn define_app_delegate() -> *const Class {
486494 let screen_rect: NSRect = msg_send ! [ main_screen, bounds] ;
487495
488496 let ( _, _) = if conf. high_dpi {
497+ let scale: f64 = msg_send ! [ main_screen, scale] ;
498+
489499 (
490- screen_rect. size . width as i32 * 2 ,
491- screen_rect. size . height as i32 * 2 ,
500+ ( screen_rect. size . width * scale ) as i32 ,
501+ ( screen_rect. size . height * scale ) as i32 ,
492502 )
493503 } else {
494504 (
0 commit comments