diff --git a/lib/diagnostics_win.cpp b/lib/diagnostics_win.cpp
index d6067d5637db8f192a4264a652cb7f1327f753e2..9b0a5e6abdde4fb5105ac6f6941a1455af04ca4b 100644
--- a/lib/diagnostics_win.cpp
+++ b/lib/diagnostics_win.cpp
@@ -325,12 +325,12 @@ int diagnostics_update_thread_list() {
                     hThread = OpenThread(
                         THREAD_ALL_ACCESS,
                         FALSE,
-                        (DWORD)(pThread->ClientId.UniqueThread)
+                        (UINT64)(pThread->ClientId.UniqueThread)
                     );
 
                     pThreadEntry = new BOINC_THREADLISTENTRY;
                     diagnostics_init_thread_entry(pThreadEntry);
-                    pThreadEntry->thread_id = (DWORD)(pThread->ClientId.UniqueThread);
+                    pThreadEntry->thread_id = (UINT64)(pThread->ClientId.UniqueThread);
                     pThreadEntry->thread_handle = hThread;
                     pThreadEntry->crash_kernel_time = (FLOAT)pThread->KernelTime.QuadPart;
                     pThreadEntry->crash_user_time = (FLOAT)pThread->UserTime.QuadPart;