Change GET/GBIT32 macros to explicitly cast final result to u32int.
Otherwise, the type of the expression will be int, and if written to
a uvlong (or just a ulong on most 64-bit systems), it will be
sign-extended.

This was going on in drawfcall with Mouse.msec, which is declared
as a ulong.

This fix assumes that the protocols only send unsigned numbers,
which is true.
diff --git a/include/drawfcall.h b/include/drawfcall.h
index e8a8c9b..0d5cd6d 100644
--- a/include/drawfcall.h
+++ b/include/drawfcall.h
@@ -53,7 +53,7 @@
 	(p)[3] = (x)&0xFF
 
 #define GET(p, x) \
-	((x) = (((p)[0] << 24) | ((p)[1] << 16) | ((p)[2] << 8) | ((p)[3])))
+	((x) = (u32int)(((p)[0] << 24) | ((p)[1] << 16) | ((p)[2] << 8) | ((p)[3])))
 
 #define PUT2(p, x) \
 	(p)[0] = ((x) >> 8)&0xFF, \
diff --git a/include/fcall.h b/include/fcall.h
index aebb451..a5dae33 100644
--- a/include/fcall.h
+++ b/include/fcall.h
@@ -50,7 +50,7 @@
 
 #define	GBIT8(p)	((p)[0])
 #define	GBIT16(p)	((p)[0]|((p)[1]<<8))
-#define	GBIT32(p)	((p)[0]|((p)[1]<<8)|((p)[2]<<16)|((p)[3]<<24))
+#define	GBIT32(p)	((u32int)((p)[0]|((p)[1]<<8)|((p)[2]<<16)|((p)[3]<<24)))
 #define	GBIT64(p)	((u32int)((p)[0]|((p)[1]<<8)|((p)[2]<<16)|((p)[3]<<24)) |\
 				((vlong)((p)[4]|((p)[5]<<8)|((p)[6]<<16)|((p)[7]<<24)) << 32))