diff --git a/lib/base64.c b/lib/base64.c
index 26d89231ec6dbff74f43a104ebcc5bdc9af6d9c8..cb67e5ad721e49c6ade05c159b5a26a144eb86be 100644
--- a/lib/base64.c
+++ b/lib/base64.c
@@ -54,22 +54,28 @@ static const char table64[]=
 
 static void decodeQuantum(unsigned char *dest, const char *src)
 {
-  unsigned int x = 0;
+  unsigned long x = 0;
   int i;
   char *found;
+  union {
+    unsigned long uns;
+             long sig;
+  } offset;
 
   for(i = 0; i < 4; i++) {
-    if((found = strchr(table64, src[i])) != NULL)
-      x = (x << 6) + (unsigned int)(found - table64);
+    if((found = strchr(table64, src[i])) != NULL) {
+      offset.sig = found - table64;
+      x = (x << 6) + offset.uns;
+    }
     else if(src[i] == '=')
       x = (x << 6);
   }
 
-  dest[2] = (unsigned char)(x & 255);
+  dest[2] = (unsigned char)(x & 0xFFUL);
   x >>= 8;
-  dest[1] = (unsigned char)(x & 255);
+  dest[1] = (unsigned char)(x & 0xFFUL);
   x >>= 8;
-  dest[0] = (unsigned char)(x & 255);
+  dest[0] = (unsigned char)(x & 0xFFUL);
 }
 
 /*
diff --git a/lib/memdebug.c b/lib/memdebug.c
index 6261749fbf04bec78967cd45261a575104c5cbbd..266480e46380d185befc3270654e514bb8ddd2a0 100644
--- a/lib/memdebug.c
+++ b/lib/memdebug.c
@@ -222,7 +222,7 @@ void *curl_dorealloc(void *ptr, size_t wantedsize,
     return NULL;
 
   if(ptr)
-    mem = (struct memdebug *)((char *)ptr - offsetof(struct memdebug, mem));
+    mem = (void *)((char *)ptr - offsetof(struct memdebug, mem));
 
   mem = (Curl_crealloc)(mem, size);
   if(source)
@@ -243,7 +243,7 @@ void curl_dofree(void *ptr, int line, const char *source)
 
   assert(ptr != NULL);
 
-  mem = (struct memdebug *)((char *)ptr - offsetof(struct memdebug, mem));
+  mem = (void *)((char *)ptr - offsetof(struct memdebug, mem));
 
   /* destroy  */
   memset(mem->mem, 0x13, mem->size);
diff --git a/lib/mprintf.c b/lib/mprintf.c
index 3d65e9ff77e7f0b59854da950099e94868b85b10..f5daa39fc8704c499496b66441990e9e149e3451 100644
--- a/lib/mprintf.c
+++ b/lib/mprintf.c
@@ -911,7 +911,7 @@ static int dprintf_formatf(
           static const char strnil[] = "(nil)";
           const char *point;
 
-          width -= sizeof(strnil) - 1;
+          width -= (long)(sizeof(strnil) - 1);
           if(p->flags & FLAGS_LEFT)
             while(width-- > 0)
               OUTCHAR(' ');