diff --git a/dlls/avicap32/avicap32_main.c b/dlls/avicap32/avicap32_main.c
index 2799ba5..7533f57 100644
--- a/dlls/avicap32/avicap32_main.c
+++ b/dlls/avicap32/avicap32_main.c
@@ -69,7 +69,7 @@
                                     INT y, INT nWidth, INT nHeight, HWND hWnd,
                                     INT nID)
 {
-    FIXME("%s, %08lx, %08x, %08x, %08x, %08x, %p, %08x\n",
+    FIXME("%s, %08x, %08x, %08x, %08x, %08x, %p, %08x\n",
            debugstr_w(lpszWindowName), dwStyle,
            x, y, nWidth, nHeight, hWnd, nID);
     return 0;
diff --git a/dlls/compstui/compstui_main.c b/dlls/compstui/compstui_main.c
index 6465f61..1299971 100644
--- a/dlls/compstui/compstui_main.c
+++ b/dlls/compstui/compstui_main.c
@@ -41,7 +41,7 @@
  */
 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 {
-    TRACE("(%p, %ld, %p)\n",hinstDLL, fdwReason, lpvReserved);
+    TRACE("(%p, %d, %p)\n",hinstDLL, fdwReason, lpvReserved);
 
     switch(fdwReason)
     {
diff --git a/dlls/crtdll/crtdll_main.c b/dlls/crtdll/crtdll_main.c
index c6f4898..8e5cc18 100644
--- a/dlls/crtdll/crtdll_main.c
+++ b/dlls/crtdll/crtdll_main.c
@@ -86,7 +86,7 @@
  */
 BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
 {
-  TRACE("(%p,%ld,%p)\n",hinstDLL,fdwReason,lpvReserved);
+  TRACE("(%p,%d,%p)\n",hinstDLL,fdwReason,lpvReserved);
 
   if (fdwReason == DLL_PROCESS_ATTACH)
   {
diff --git a/dlls/cryptdll/cryptdll.c b/dlls/cryptdll/cryptdll.c
index 4013cb2..c03ae56 100644
--- a/dlls/cryptdll/cryptdll.c
+++ b/dlls/cryptdll/cryptdll.c
@@ -29,7 +29,7 @@
 
 BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 {
-    TRACE("%p,%lx,%p\n", hinstDLL, fdwReason, lpvReserved);
+    TRACE("%p,%x,%p\n", hinstDLL, fdwReason, lpvReserved);
 
     switch (fdwReason) {
         case DLL_WINE_PREATTACH:
diff --git a/dlls/cryptnet/cryptnet_main.c b/dlls/cryptnet/cryptnet_main.c
index bed7782..3ecb0d3 100644
--- a/dlls/cryptnet/cryptnet_main.c
+++ b/dlls/cryptnet/cryptnet_main.c
@@ -27,7 +27,7 @@
 
 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 {
-   TRACE("(0x%p, %ld, %p)\n", hinstDLL, fdwReason, lpvReserved);
+   TRACE("(0x%p, %d, %p)\n", hinstDLL, fdwReason, lpvReserved);
 
    switch (fdwReason) {
       case DLL_WINE_PREATTACH:
diff --git a/dlls/dpnhpast/main.c b/dlls/dpnhpast/main.c
index 25981b4..8e31bbd 100644
--- a/dlls/dpnhpast/main.c
+++ b/dlls/dpnhpast/main.c
@@ -34,7 +34,7 @@
  */
 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 {
-	TRACE("(%p, %ld, %p)\n",hinstDLL,fdwReason,lpvReserved);
+	TRACE("(%p, %d, %p)\n",hinstDLL,fdwReason,lpvReserved);
 
 	if (fdwReason == DLL_PROCESS_ATTACH)
 	{
diff --git a/dlls/gphoto2.ds/gphoto2_main.c b/dlls/gphoto2.ds/gphoto2_main.c
index 777c72e..fcd4b16 100644
--- a/dlls/gphoto2.ds/gphoto2_main.c
+++ b/dlls/gphoto2.ds/gphoto2_main.c
@@ -36,7 +36,7 @@
 
 BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 {
-    TRACE("%p,%lx,%p\n", hinstDLL, fdwReason, lpvReserved);
+    TRACE("%p,%x,%p\n", hinstDLL, fdwReason, lpvReserved);
 
     switch (fdwReason)
     {
diff --git a/dlls/hlink/tests/hlink.c b/dlls/hlink/tests/hlink.c
index e44a799..8854e79 100644
--- a/dlls/hlink/tests/hlink.c
+++ b/dlls/hlink/tests/hlink.c
@@ -56,7 +56,7 @@
 
     for(i=0; i<sizeof(shortcut_test)/sizeof(shortcut_test[0]); i++) {
         hres = HlinkIsShortcut(shortcut_test[i].file);
-        ok(hres == shortcut_test[i].hres, "[%d] HlinkIsShortcut returned %08lx, expected %08lx\n",
+        ok(hres == shortcut_test[i].hres, "[%d] HlinkIsShortcut returned %08x, expected %08x\n",
            i, hres, shortcut_test[i].hres);
     }
 }
diff --git a/dlls/localspl/localspl_main.c b/dlls/localspl/localspl_main.c
index 48d1efb..b1de446 100644
--- a/dlls/localspl/localspl_main.c
+++ b/dlls/localspl/localspl_main.c
@@ -45,7 +45,7 @@
  */
 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 {
-    TRACE("(%p, %ld, %p)\n",hinstDLL, fdwReason, lpvReserved);
+    TRACE("(%p, %d, %p)\n",hinstDLL, fdwReason, lpvReserved);
 
     switch(fdwReason)
     {
diff --git a/dlls/mmdevldr.vxd/mmdevldr.c b/dlls/mmdevldr.vxd/mmdevldr.c
index 98ab221..1396861 100644
--- a/dlls/mmdevldr.vxd/mmdevldr.c
+++ b/dlls/mmdevldr.vxd/mmdevldr.c
@@ -37,7 +37,7 @@
                                      LPDWORD lpcbBytesReturned,
                                      LPOVERLAPPED lpOverlapped)
 {
-    FIXME("(%ld,%p,%ld,%p,%ld,%p,%p): stub\n",
+    FIXME("(%d,%p,%d,%p,%d,%p,%p): stub\n",
           dwIoControlCode,
           lpvInBuffer,cbInBuffer,
           lpvOutBuffer,cbOutBuffer,
diff --git a/dlls/monodebg.vxd/monodebg.c b/dlls/monodebg.vxd/monodebg.c
index e625a05..715c296 100644
--- a/dlls/monodebg.vxd/monodebg.c
+++ b/dlls/monodebg.vxd/monodebg.c
@@ -46,7 +46,7 @@
         ERR("%s\n",debugstr_a(lpvInBuffer));
         break;
     default:
-        FIXME("(%ld,%p,%ld,%p,%ld,%p,%p): stub\n",
+        FIXME("(%d,%p,%d,%p,%d,%p,%p): stub\n",
               dwIoControlCode,
               lpvInBuffer,cbInBuffer,
               lpvOutBuffer,cbOutBuffer,
diff --git a/dlls/mprapi/mprapi.c b/dlls/mprapi/mprapi.c
index ad92377..90f47ae 100644
--- a/dlls/mprapi/mprapi.c
+++ b/dlls/mprapi/mprapi.c
@@ -30,7 +30,7 @@
  */
 BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved)
 {
-    TRACE("(%p, %ld, %p)\n", hinst, reason, reserved);
+    TRACE("(%p, %d, %p)\n", hinst, reason, reserved);
 
     switch(reason)
     {
diff --git a/dlls/msisys.ocx/msisys.c b/dlls/msisys.ocx/msisys.c
index b118db1..e5ee4ed 100644
--- a/dlls/msisys.ocx/msisys.c
+++ b/dlls/msisys.ocx/msisys.c
@@ -60,7 +60,7 @@
 	DWORD fdwReason,
 	LPVOID lpvReserved )
 {
-	TRACE("(%p,%ld,%p)\n",hInstDLL,fdwReason,lpvReserved);
+	TRACE("(%p,%d,%p)\n",hInstDLL,fdwReason,lpvReserved);
 
 	switch ( fdwReason )
 	{
diff --git a/dlls/msnet32/msnet_main.c b/dlls/msnet32/msnet_main.c
index 924ffd2..7c75900 100644
--- a/dlls/msnet32/msnet_main.c
+++ b/dlls/msnet32/msnet_main.c
@@ -46,6 +46,6 @@
  */
 LONG WINAPI MSNET32_57( LONG a1, LONG a2, LPVOID a3, LONG a4, LPVOID a5 )
 {
-    FIXME("(0x%04lx 0x%04lx %p 0x%04lx %p): stub\n", a1, a2, a3, a4, a5);
+    FIXME("(0x%04x 0x%04x %p 0x%04x %p): stub\n", a1, a2, a3, a4, a5);
     return -1; /* FAILURE */
 }
diff --git a/dlls/msvcrtd/tests/debug.c b/dlls/msvcrtd/tests/debug.c
index 3a732e4..fbfcdc5 100644
--- a/dlls/msvcrtd/tests/debug.c
+++ b/dlls/msvcrtd/tests/debug.c
@@ -41,7 +41,7 @@
   HMODULE hModule = LoadLibraryA("msvcrtd.dll");
 
   if (!hModule) {
-    trace("LoadLibraryA failed to load msvcrtd.dll with GLE=%ld\n", GetLastError());
+    trace("LoadLibraryA failed to load msvcrtd.dll with GLE=%d\n", GetLastError());
     return FALSE;
   }
 
diff --git a/dlls/ntdsapi/ntdsapi.c b/dlls/ntdsapi/ntdsapi.c
index 0b16c2e..940950b 100644
--- a/dlls/ntdsapi/ntdsapi.c
+++ b/dlls/ntdsapi/ntdsapi.c
@@ -31,7 +31,7 @@
  */
 BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved)
 {
-    TRACE("(%p, %ld, %p)\n", hinst, reason, reserved);
+    TRACE("(%p, %d, %p)\n", hinst, reason, reserved);
 
     switch(reason)
     {
diff --git a/dlls/odbccp32/odbccp32.c b/dlls/odbccp32/odbccp32.c
index 2f2b55b..74b70b8 100644
--- a/dlls/odbccp32/odbccp32.c
+++ b/dlls/odbccp32/odbccp32.c
@@ -36,7 +36,7 @@
 
 BOOL WINAPI ODBCCPlApplet( LONG i, LONG j, LONG * p1, LONG * p2)
 {
-    FIXME( "( %ld %ld %p %p) : stub!\n", i, j, p1, p2);
+    FIXME( "( %d %d %p %p) : stub!\n", i, j, p1, p2);
     return FALSE;
 }
 
diff --git a/dlls/oledlg/oledlg_main.c b/dlls/oledlg/oledlg_main.c
index c7daf5f..4bf0595 100644
--- a/dlls/oledlg/oledlg_main.c
+++ b/dlls/oledlg/oledlg_main.c
@@ -39,7 +39,7 @@
  */
 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
 {
-    TRACE("%p 0x%lx %p\n", hinstDLL, fdwReason, fImpLoad);
+    TRACE("%p 0x%x %p\n", hinstDLL, fdwReason, fImpLoad);
 
     switch(fdwReason) {
     case DLL_PROCESS_ATTACH:
diff --git a/dlls/sane.ds/sane_main.c b/dlls/sane.ds/sane_main.c
index 0afedd7..6b4c6b9 100644
--- a/dlls/sane.ds/sane_main.c
+++ b/dlls/sane.ds/sane_main.c
@@ -35,7 +35,7 @@
 
 BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 {
-    TRACE("%p,%lx,%p\n", hinstDLL, fdwReason, lpvReserved);
+    TRACE("%p,%x,%p\n", hinstDLL, fdwReason, lpvReserved);
 
     switch (fdwReason)
     {
diff --git a/dlls/sensapi/sensapi.c b/dlls/sensapi/sensapi.c
index c217a2d..4357d4f 100644
--- a/dlls/sensapi/sensapi.c
+++ b/dlls/sensapi/sensapi.c
@@ -48,7 +48,7 @@
 
 BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 {
-    TRACE("%p,%lx,%p\n", hinstDLL, fdwReason, lpvReserved);
+    TRACE("%p,%x,%p\n", hinstDLL, fdwReason, lpvReserved);
 
     switch (fdwReason) {
         case DLL_PROCESS_ATTACH:
diff --git a/dlls/snmpapi/main.c b/dlls/snmpapi/main.c
index d62fa6f..114aa92 100644
--- a/dlls/snmpapi/main.c
+++ b/dlls/snmpapi/main.c
@@ -36,7 +36,7 @@
 	DWORD fdwReason,
 	LPVOID lpvReserved)
 {
-    TRACE("(%p,%ld,%p)\n", hInstDLL, fdwReason, lpvReserved);
+    TRACE("(%p,%d,%p)\n", hInstDLL, fdwReason, lpvReserved);
 
     switch(fdwReason) {
     case DLL_WINE_PREATTACH:
diff --git a/dlls/svrapi/svrapi_main.c b/dlls/svrapi/svrapi_main.c
index de5aaf0..9649772 100644
--- a/dlls/svrapi/svrapi_main.c
+++ b/dlls/svrapi/svrapi_main.c
@@ -35,7 +35,7 @@
  */
 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
 {
-    TRACE("%p 0x%lx %p\n", hinstDLL, fdwReason, fImpLoad);
+    TRACE("%p 0x%x %p\n", hinstDLL, fdwReason, fImpLoad);
 
     switch(fdwReason) {
         case DLL_WINE_PREATTACH:
diff --git a/dlls/twain_32/twain32_main.c b/dlls/twain_32/twain32_main.c
index 95215d1..b7db5d2 100644
--- a/dlls/twain_32/twain32_main.c
+++ b/dlls/twain_32/twain32_main.c
@@ -45,7 +45,7 @@
 
 BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 {
-    TRACE("%p,%lx,%p\n", hinstDLL, fdwReason, lpvReserved);
+    TRACE("%p,%x,%p\n", hinstDLL, fdwReason, lpvReserved);
 
     switch (fdwReason)
     {
diff --git a/dlls/userenv/userenv_main.c b/dlls/userenv/userenv_main.c
index dc79387..a147199 100644
--- a/dlls/userenv/userenv_main.c
+++ b/dlls/userenv/userenv_main.c
@@ -31,7 +31,7 @@
 
 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 {
-    TRACE("%p %ld %p\n", hinstDLL, fdwReason, lpvReserved);
+    TRACE("%p %d %p\n", hinstDLL, fdwReason, lpvReserved);
 
     switch (fdwReason)
     {
diff --git a/dlls/vdhcp.vxd/vdhcp.c b/dlls/vdhcp.vxd/vdhcp.c
index b00d038..a7b97a3 100644
--- a/dlls/vdhcp.vxd/vdhcp.c
+++ b/dlls/vdhcp.vxd/vdhcp.c
@@ -62,7 +62,7 @@
         break;
 
     default:
-        FIXME("(%ld,%p,%ld,%p,%ld,%p,%p): stub\n",
+        FIXME("(%d,%p,%d,%p,%d,%p,%p): stub\n",
                 dwIoControlCode,
                 lpvInBuffer,cbInBuffer,
                 lpvOutBuffer,cbOutBuffer,
diff --git a/dlls/vnbt.vxd/vnbt.c b/dlls/vnbt.vxd/vnbt.c
index 92c6c03..29d3fa6 100644
--- a/dlls/vnbt.vxd/vnbt.c
+++ b/dlls/vnbt.vxd/vnbt.c
@@ -155,7 +155,7 @@
          * to unimplemented...
          */
     default:
-        FIXME( "Unimplemented control %ld for VxD device VNB\n",
+        FIXME( "Unimplemented control %d for VxD device VNB\n",
                dwIoControlCode );
         error = ERROR_NOT_SUPPORTED;
         break;
diff --git a/dlls/vnetbios.vxd/vnetbios.c b/dlls/vnetbios.vxd/vnetbios.c
index c3adf61..3bbd0f9 100644
--- a/dlls/vnetbios.vxd/vnetbios.c
+++ b/dlls/vnetbios.vxd/vnetbios.c
@@ -39,7 +39,7 @@
         Netbios(lpvInBuffer);
         return TRUE;
     default:
-        FIXME("(%ld,%p,%ld,%p,%ld,%p,%p): stub\n",
+        FIXME("(%d,%p,%d,%p,%d,%p,%p): stub\n",
               code, lpvInBuffer,cbInBuffer, lpvOutBuffer,cbOutBuffer,
               lpcbBytesReturned, lpOverlapped);
         return FALSE;
diff --git a/dlls/vtdapi.vxd/vtdapi.c b/dlls/vtdapi.vxd/vtdapi.c
index 43e75f5..7abc00a 100644
--- a/dlls/vtdapi.vxd/vtdapi.c
+++ b/dlls/vtdapi.vxd/vtdapi.c
@@ -42,7 +42,7 @@
         return TRUE;
 
     default:
-        FIXME( "Control %ld not implemented\n", code);
+        FIXME( "Control %d not implemented\n", code);
         return FALSE;
     }
 }
diff --git a/dlls/winmm/joystick/joystick.c b/dlls/winmm/joystick/joystick.c
index 094daff..02db839 100644
--- a/dlls/winmm/joystick/joystick.c
+++ b/dlls/winmm/joystick/joystick.c
@@ -400,7 +400,7 @@
 	lpInfo->dwButtons = js.buttons;
 #endif
 
-    TRACE("x: %ld, y: %ld, z: %ld, r: %ld, u: %ld, v: %ld, buttons: 0x%04x, flags: 0x%04x (fd %d)\n",
+    TRACE("x: %d, y: %d, z: %d, r: %d, u: %d, v: %d, buttons: 0x%04x, flags: 0x%04x (fd %d)\n",
 	  lpInfo->dwXpos, lpInfo->dwYpos, lpInfo->dwZpos,
 	  lpInfo->dwRpos, lpInfo->dwUpos, lpInfo->dwVpos,
 	  (unsigned int)lpInfo->dwButtons,
diff --git a/programs/expand/expand.c b/programs/expand/expand.c
index f018ca8..9f2af8e 100644
--- a/programs/expand/expand.c
+++ b/programs/expand/expand.c
@@ -47,6 +47,6 @@
   ret = LZCopy(hSourceFile, hDestFile);
   LZClose(hSourceFile);
   LZClose(hDestFile);
-  if (ret <= 0) fprintf(stderr,"LZCopy failed: return is %ld\n",ret);
+  if (ret <= 0) fprintf(stderr,"LZCopy failed: return is %d\n",ret);
   return (ret <= 0);
 }
diff --git a/programs/explorer/desktop.c b/programs/explorer/desktop.c
index 0b8bfbb..bbbde03 100644
--- a/programs/explorer/desktop.c
+++ b/programs/explorer/desktop.c
@@ -80,7 +80,7 @@
     desktop = CreateDesktopA( name, NULL, NULL, 0, DESKTOP_ALL_ACCESS, NULL );
     if (!desktop)
     {
-        WINE_ERR( "failed to create desktop %s error %ld\n", wine_dbgstr_a(name), GetLastError() );
+        WINE_ERR( "failed to create desktop %s error %d\n", wine_dbgstr_a(name), GetLastError() );
         ExitProcess( 1 );
     }
     /* magic: desktop "root" means use the X11 root window */
diff --git a/programs/msiexec/msiexec.c b/programs/msiexec/msiexec.c
index ccb48b2..64ad48e 100644
--- a/programs/msiexec/msiexec.c
+++ b/programs/msiexec/msiexec.c
@@ -710,7 +710,7 @@
 			LogFileName = argvW[i];
 			if(MsiEnableLogW(LogMode, LogFileName, LogAttributes) != ERROR_SUCCESS)
 			{
-				fprintf(stderr, "Logging in %s (0x%08lx, %lu) failed\n",
+				fprintf(stderr, "Logging in %s (0x%08x, %u) failed\n",
 					 wine_dbgstr_w(LogFileName), LogMode, LogAttributes);
 				ExitProcess(1);
 			}
diff --git a/programs/uninstaller/main.c b/programs/uninstaller/main.c
index df97b93..6b3f4c7 100644
--- a/programs/uninstaller/main.c
+++ b/programs/uninstaller/main.c
@@ -256,7 +256,7 @@
         {   /* wait for the process to exit */
             WaitForSingleObject(info.hProcess, INFINITE);
             res = GetExitCodeProcess(info.hProcess, &exit_code);
-            WINE_TRACE("%d: %08lx\n", res, exit_code);
+            WINE_TRACE("%d: %08x\n", res, exit_code);
         }
         else
         {
diff --git a/tools/widl/hash.c b/tools/widl/hash.c
index 2d6f1d3..547c0b1 100644
--- a/tools/widl/hash.c
+++ b/tools/widl/hash.c
@@ -514,7 +514,7 @@
   switch (PRIMARYLANGID(LANGIDFROMLCID(lcid)))
   {
   default:
-    fprintf(stderr, "Unknown lcid %lx, treating as latin-based, please report\n", lcid);
+    fprintf(stderr, "Unknown lcid %x, treating as latin-based, please report\n", lcid);
     /* .. Fall Through .. */
   case LANG_AFRIKAANS:  case LANG_ALBANIAN:   case LANG_ARMENIAN:
   case LANG_ASSAMESE:   case LANG_AZERI:      case LANG_BASQUE:
