diff --git a/src/odoors/ODPlat.c b/src/odoors/ODPlat.c
index 752707f455f5f5dad6a37b914e7017c17915588c..86ecb5666ce560166ca6d24302a47b0f3ee5e19b 100644
--- a/src/odoors/ODPlat.c
+++ b/src/odoors/ODPlat.c
@@ -573,7 +573,7 @@ void ODTimerStart(tODTimer *pTimer, tODMilliSec Duration)
 
 #ifdef ODPLAT_WIN32
    /* Store timer start time now. */
-   pTimer->Start = GetCurrentTime();
+   pTimer->Start = GetTickCount();
    pTimer->Duration = Duration;
 #endif /* ODPLAT_WIN32 */
 
@@ -610,8 +610,7 @@ BOOL ODTimerElapsed(tODTimer *pTimer)
 #endif /* ODPLAT_DOS */
 
 #ifdef ODPLAT_WIN32
-   return(GetCurrentTime() > pTimer->Start + pTimer->Duration
-      || GetCurrentTime() < pTimer->Start);
+   return(ODTimerLeft(pTimer)==0);
 #endif /* ODPLAT_WIN32 */
 
 #ifdef ODPLAT_NIX
@@ -704,7 +703,7 @@ tODMilliSec ODTimerLeft(tODTimer *pTimer)
       tODMilliSec Now;
 
 #ifdef ODPLAT_WIN32      
-      Now = GetCurrentTime();
+      Now = GetTickCount();
 #endif /* ODPLAT_WIN32 */
 
       /* If timer has elapsed, return 0. */