diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index f5dce587589cd18a24a8a962ca1a2e92ab34924d..8210a41a789af1ecc38a3b34cd809362bd7f3a12 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -1492,7 +1492,12 @@ bool LLAppViewer::mainLoop()
 
 				// Limit FPS
 				F32 max_fps = gSavedSettings.getF32("MaxFPS");
-				if (max_fps > F_APPROXIMATELY_ZERO)
+				// Only limit FPS when we are actually rendering something.  Otherwise
+				// logins, logouts and teleports take much longer to complete.
+				if (max_fps > F_APPROXIMATELY_ZERO && 
+					LLStartUp::getStartupState() == STATE_STARTED &&
+					!gTeleportDisplay &&
+					!logoutRequestSent())
 				{
 					// Sleep a while to limit frame rate.
 					F32 min_frame_time = 1.f / max_fps;