diff --git a/src/i_time.c b/src/i_time.c
index c86973f6e9753a52859efc5c9b8c6b71c779c5c9..c1cc9dfd44d1c20828c598b44826fdbb48fed919 100644
--- a/src/i_time.c
+++ b/src/i_time.c
@@ -30,6 +30,12 @@ static precise_t enterprecise, oldenterprecise;
 static fixed_t entertic, oldentertics;
 static double tictimer;
 
+// A little more than the minimum sleep duration on Windows.
+// May be incorrect for other platforms, but we don't currently have a way to
+// query the scheduler granularity. SDL will do what's needed to make this as
+// low as possible though.
+#define MIN_SLEEP_DURATION_MS 2.1
+
 tic_t I_GetTime(void)
 {
 	return g_time.time;
@@ -90,7 +96,7 @@ void I_SleepDuration(precise_t duration)
 	precise_t dest;
 
 	{
-		double gran = round(((double)(precision / 1000) * sleepvalue * 2.1));
+		double gran = round(((double)(precision / 1000) * sleepvalue * MIN_SLEEP_DURATION_MS));
 		delaygranularity = (UINT64)gran;
 	}