diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index bc4f07941b2511adcfdcc27ce2eb8bbdff7e3f64..b3616e4ea8adbcef41f8cd2bf082b2c2859bb0c0 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -660,6 +660,8 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
 		}
 	}
 
+    mRefreshRate = CGDisplayModeGetRefreshRate(CGDisplayCopyDisplayMode(mDisplay));
+
 	// Disable vertical sync for swap
     toggleVSync(enable_vsync);
 
diff --git a/indra/newview/llfloaterperformance.cpp b/indra/newview/llfloaterperformance.cpp
index ecacadee3e704536077b0fd1f9993f6c9b5600cb..0ef9ab32155a594e2b46f3485a7c208397bc89a3 100644
--- a/indra/newview/llfloaterperformance.cpp
+++ b/indra/newview/llfloaterperformance.cpp
@@ -416,7 +416,8 @@ void LLFloaterPerformance::setFPSText()
 
     std::string fps_text = getString("fps_text");
     static LLCachedControl<bool> vsync_enabled(gSavedSettings, "RenderVSyncEnable", true);
-    if (vsync_enabled && (current_fps >= gViewerWindow->getWindow()->getRefreshRate()))
+    S32 refresh_rate = gViewerWindow->getWindow()->getRefreshRate();
+    if (vsync_enabled && (refresh_rate > 0) && (current_fps >= refresh_rate))
     {
         fps_text += getString("max_text");
     }