diff --git a/misc/wsprintf.c b/misc/wsprintf.c
index 96f1efb7d45cd799e87034b044a19f75e7437837..9c4830519d30416a6423f720e1ae066fb9f293b4 100644
--- a/misc/wsprintf.c
+++ b/misc/wsprintf.c
@@ -237,9 +237,8 @@ static UINT WPRINTF_GetLen( WPRINTF_FORMAT *format, WPRINTF_DATA *arg,
         break;
     case WPR_HEXA:
         len = sprintf( number,
-                        (format->flags & WPRINTF_UPPER_HEX) ? "%X" : "%x",
-                        (UINT)arg->int_view);
-        if (format->flags & WPRINTF_PREFIX_HEX) len += 2;
+                       (format->flags & WPRINTF_UPPER_HEX) ? "%X" : "%x",
+                       (UINT)arg->int_view);
         break;
     default:
         return 0;
@@ -249,6 +248,7 @@ static UINT WPRINTF_GetLen( WPRINTF_FORMAT *format, WPRINTF_DATA *arg,
     if (format->precision > maxlen) format->precision = maxlen;
     if ((format->flags & WPRINTF_ZEROPAD) && (format->width > format->precision))
         format->precision = format->width;
+    if (format->flags & WPRINTF_PREFIX_HEX) len += 2;
     return len;
 }
 
@@ -351,8 +351,6 @@ INT16 WINAPI wvsnprintf16( LPSTR buffer, UINT16 maxlen, LPCSTR spec,
                 *p++ = (format.flags & WPRINTF_UPPER_HEX) ? 'X' : 'x';
                 maxlen -= 2;
                 len -= 2;
-                format.precision -= 2;
-                format.width -= 2;
             }
             /* fall through */
         case WPR_SIGNED:
@@ -428,8 +426,6 @@ INT WINAPI wvsnprintfA( LPSTR buffer, UINT maxlen, LPCSTR spec,
                 *p++ = (format.flags & WPRINTF_UPPER_HEX) ? 'X' : 'x';
                 maxlen -= 2;
                 len -= 2;
-                format.precision -= 2;
-                format.width -= 2;
             }
             /* fall through */
         case WPR_SIGNED:
@@ -505,8 +501,6 @@ INT WINAPI wvsnprintfW( LPWSTR buffer, UINT maxlen, LPCWSTR spec,
                 *p++ = (format.flags & WPRINTF_UPPER_HEX) ? 'X' : 'x';
                 maxlen -= 2;
                 len -= 2;
-                format.precision -= 2;
-                format.width -= 2;
             }
             /* fall through */
         case WPR_SIGNED: