diff --git a/indra/llwindow/llopenglview-objc.mm b/indra/llwindow/llopenglview-objc.mm
index 65c0a53a961db9cf8ce5a94d2cc18d79a20276e5..33eed7227af3ca0cd333ad1e9f75368eb5c8f04d 100644
--- a/indra/llwindow/llopenglview-objc.mm
+++ b/indra/llwindow/llopenglview-objc.mm
@@ -343,7 +343,7 @@ attributedStringInfo getSegments(NSAttributedString *str)
 
 - (void) mouseDown:(NSEvent *)theEvent
 {
-    NSPoint mPoint = [theEvent locationInWindow];
+    NSPoint mPoint = gHiDPISupport ? [self convertPointToBacking:[theEvent locationInWindow]] : [theEvent locationInWindow];
     mMousePos[0] = mPoint.x;
     mMousePos[1] = mPoint.y;
 
@@ -384,11 +384,17 @@ attributedStringInfo getSegments(NSAttributedString *str)
 
 - (void) rightMouseDown:(NSEvent *)theEvent
 {
+    NSPoint mPoint = gHiDPISupport ? [self convertPointToBacking:[theEvent locationInWindow]] : [theEvent locationInWindow];
+    mMousePos[0] = mPoint.x;
+    mMousePos[1] = mPoint.y;
 	callRightMouseDown(mMousePos, [theEvent modifierFlags]);
 }
 
 - (void) rightMouseUp:(NSEvent *)theEvent
 {
+    NSPoint mPoint = gHiDPISupport ? [self convertPointToBacking:[theEvent locationInWindow]] : [theEvent locationInWindow];
+    mMousePos[0] = mPoint.x;
+    mMousePos[1] = mPoint.y;
 	callRightMouseUp(mMousePos, [theEvent modifierFlags]);
 }
 
@@ -435,11 +441,17 @@ attributedStringInfo getSegments(NSAttributedString *str)
 
 - (void) otherMouseDown:(NSEvent *)theEvent
 {
+    NSPoint mPoint = gHiDPISupport ? [self convertPointToBacking:[theEvent locationInWindow]] : [theEvent locationInWindow];
+    mMousePos[0] = mPoint.x;
+    mMousePos[1] = mPoint.y;
 	callMiddleMouseDown(mMousePos, [theEvent modifierFlags]);
 }
 
 - (void) otherMouseUp:(NSEvent *)theEvent
 {
+    NSPoint mPoint = gHiDPISupport ? [self convertPointToBacking:[theEvent locationInWindow]] : [theEvent locationInWindow];
+    mMousePos[0] = mPoint.x;
+    mMousePos[1] = mPoint.y;
 	callMiddleMouseUp(mMousePos, [theEvent modifierFlags]);
 }
 
diff --git a/indra/llwindow/llwindowmacosx-objc.h b/indra/llwindow/llwindowmacosx-objc.h
index 34da99de194c59cbc0de4a0b818884609096b468..10bd3cbb9127929bfb630a5e095f667d98835064 100644
--- a/indra/llwindow/llwindowmacosx-objc.h
+++ b/indra/llwindow/llwindowmacosx-objc.h
@@ -110,9 +110,9 @@ void glSwapBuffers(void* context);
 CGLContextObj getCGLContextObj(GLViewRef view);
 unsigned long getVramSize(GLViewRef view);
 float getDeviceUnitSize(GLViewRef view);
-const CGPoint & getContentViewBoundsPosition(NSWindowRef window);
-const CGSize & getContentViewBoundsSize(NSWindowRef window);
-const CGSize & getDeviceContentViewSize(NSWindowRef window, GLViewRef view);
+const CGPoint getContentViewBoundsPosition(NSWindowRef window);
+const CGSize getContentViewBoundsSize(NSWindowRef window);
+const CGSize getDeviceContentViewSize(NSWindowRef window, GLViewRef view);
 void getWindowSize(NSWindowRef window, float* size);
 void setWindowSize(NSWindowRef window, int width, int height);
 void getCursorPos(NSWindowRef window, float* pos);
diff --git a/indra/llwindow/llwindowmacosx-objc.mm b/indra/llwindow/llwindowmacosx-objc.mm
index c3eb9b8c8a79004d65094ba2457bb146fadea319..8fece7c5c7cc6c61e324b9ead36d8007c8166ee2 100644
--- a/indra/llwindow/llwindowmacosx-objc.mm
+++ b/indra/llwindow/llwindowmacosx-objc.mm
@@ -258,17 +258,17 @@ float getDeviceUnitSize(GLViewRef view)
 	return [(LLOpenGLView*)view convertSizeToBacking:NSMakeSize(1, 1)].width;
 }
 
-const CGPoint & getContentViewBoundsPosition(NSWindowRef window)
+const CGPoint getContentViewBoundsPosition(NSWindowRef window)
 {
 	return [[(LLNSWindow*)window contentView] bounds].origin;
 }
 
-const CGSize & getContentViewBoundsSize(NSWindowRef window)
+const CGSize getContentViewBoundsSize(NSWindowRef window)
 {
 	return [[(LLNSWindow*)window contentView] bounds].size;
 }
 
-const CGSize & getDeviceContentViewSize(NSWindowRef window, GLViewRef view)
+const CGSize getDeviceContentViewSize(NSWindowRef window, GLViewRef view)
 {
     return [(NSOpenGLView*)view convertRectToBacking:[[(LLNSWindow*)window contentView] bounds]].size;
 }
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index fedea3de08d274286d7e6b3343b11392218e6ced..6dec131a3478146ae0823dedf43a559f99fa7239 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -869,10 +869,11 @@ BOOL LLWindowMacOSX::getSize(LLCoordScreen *size)
 
 		size->mX = sz.width;
 		size->mY = sz.height;
+        err = noErr;
 	}
 	else
 	{
-		LL_ERRS() << "LLWindowMacOSX::getPosition(): no window and not fullscreen!" << LL_ENDL;
+		LL_ERRS() << "LLWindowMacOSX::getSize(): no window and not fullscreen!" << LL_ENDL;
 	}
 
 	return (err == noErr);
@@ -894,10 +895,13 @@ BOOL LLWindowMacOSX::getSize(LLCoordWindow *size)
 		
 		size->mX = sz.width;
 		size->mY = sz.height;
+        err = noErr;
+        
+        
 	}
 	else
 	{
-		LL_ERRS() << "LLWindowMacOSX::getPosition(): no window and not fullscreen!" << LL_ENDL;
+		LL_ERRS() << "LLWindowMacOSX::getSize(): no window and not fullscreen!" << LL_ENDL;
 	}
 	
 	return (err == noErr);