diff --git a/inc/main.h b/inc/main.h
index 72ddacb..4599e17 100644
--- a/inc/main.h
+++ b/inc/main.h
@@ -124,6 +124,7 @@ typedef struct IDirectDrawImpl
     LONG minimized;
     BOOL altenter;
     BOOL hidecursor;
+    BOOL accurateTimers;
     SpeedLimiter ticksLimiter;
     SpeedLimiter flipLimiter;
     SpeedLimiter fpsLimiter;
diff --git a/src/render_soft.c b/src/render_soft.c
index ae8e87d..4ab7203 100644
--- a/src/render_soft.c
+++ b/src/render_soft.c
@@ -55,7 +55,7 @@ DWORD WINAPI render_soft_main(void)
     {
         float len = 1000.0f / maxFPS;
         ddraw->fpsLimiter.tickLengthNs = len * 10000;
-        ddraw->fpsLimiter.ticklength = len;// + 0.5f;
+        ddraw->fpsLimiter.ticklength = len + (ddraw->accurateTimers ? 0.5f : 0.0f);
     }
 
     while (ddraw->render.run && WaitForSingleObject(ddraw->render.sem, INFINITE) != WAIT_FAILED)
diff --git a/src/settings.c b/src/settings.c
index b8ffc90..24b3651 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -40,18 +40,17 @@ void Settings_Load()
     ddraw->vsync = GetBool("vsync", FALSE);
     ddraw->noactivateapp = GetBool("noactivateapp", FALSE);
     ddraw->vhack = GetBool("vhack", FALSE);
+    ddraw->accurateTimers = GetBool("accuratetimers", FALSE);
 
     WindowRect.right = GetInt("width", 0);
     WindowRect.bottom = GetInt("height", 0);
     WindowRect.left = GetInt("posX", -32000);
     WindowRect.top = GetInt("posY", -32000);
 
-    BOOL accurateTimers = GetBool("accuratetimers", FALSE);
-
     ddraw->render.maxfps = GetInt("maxfps", 125);
     if (ddraw->render.maxfps <= 1000)
     {
-        if (accurateTimers)
+        if (ddraw->accurateTimers)
             ddraw->fpsLimiter.hTimer = CreateWaitableTimer(NULL, TRUE, NULL);
         //can't fully set it up here due to missing ddraw->mode.dmDisplayFrequency
     }
@@ -59,7 +58,7 @@ void Settings_Load()
     int maxTicks = GetInt("maxgameticks", 0);
     if (maxTicks > 0 && maxTicks <= 1000)
     {
-        if (accurateTimers)
+        if (ddraw->accurateTimers)
             ddraw->ticksLimiter.hTimer = CreateWaitableTimer(NULL, TRUE, NULL);
 
         float len = 1000.0f / maxTicks;
@@ -68,7 +67,7 @@ void Settings_Load()
     }
 
     //always using 60 fps for flip...
-    if (accurateTimers)
+    if (ddraw->accurateTimers)
         ddraw->flipLimiter.hTimer = CreateWaitableTimer(NULL, TRUE, NULL);
 
     float flipLen = 1000.0f / 60;