diff --git a/src/libdraw/bytesperline.c b/src/libdraw/bytesperline.c
index 08ff7d7..056ac7c 100644
--- a/src/libdraw/bytesperline.c
+++ b/src/libdraw/bytesperline.c
@@ -24,7 +24,7 @@
 int
 wordsperline(Rectangle r, int d)
 {
-	return unitsperline(r, d, 8*sizeof(ulong));
+	return unitsperline(r, d, 8*sizeof(u32int));
 }
 
 int
diff --git a/src/libdraw/md-alloc.c b/src/libdraw/md-alloc.c
index b4204f4..89755ee 100644
--- a/src/libdraw/md-alloc.c
+++ b/src/libdraw/md-alloc.c
@@ -19,7 +19,7 @@
 	md->base = to;
 
 	/* if allocmemimage changes this must change too */
-	md->bdata = (uchar*)&md->base[2];
+	md->bdata = (uchar*)((ulong*)md->base+2);
 }
 
 Memimage*
@@ -71,6 +71,7 @@
 {
 	int d;
 	u32int l, nw;
+	ulong *ul;
 	Memdata *md;
 	Memimage *i;
 
@@ -87,22 +88,23 @@
 
 	md->ref = 1;
 	/*
-	 * The first two words are the md and the callerpc.
+	 * The first two ulongs are the md and the callerpc.
 	 * Then nw words of data.
 	 * The final word lets the drawing routines be a little
 	 * sloppy about reading past the end of the block.
 	 */
-	md->base = poolalloc(imagmem, (2+nw+1)*sizeof(u32int));
+	md->base = poolalloc(imagmem, 2*sizeof(ulong)+(nw+1)*sizeof(u32int));
 	if(md->base == nil){
 		free(md);
 		return nil;
 	}
 
-	md->base[0] = (u32int)md;
-	md->base[1] = getcallerpc(&r);
+	ul = (ulong*)md->base;
+	ul[0] = (ulong)md;
+	ul[1] = getcallerpc(&r);
 
 	/* if this changes, memimagemove must change too */
-	md->bdata = (uchar*)&md->base[2];
+	md->bdata = (uchar*)(ul+2);
 
 	md->allocd = 1;
 
@@ -135,7 +137,7 @@
 u32int*
 wordaddr(Memimage *i, Point p)
 {
-	return (u32int*) ((u32int)byteaddr(i, p) & ~(sizeof(u32int)-1));
+	return (u32int*) ((ulong)byteaddr(i, p) & ~(sizeof(u32int)-1));
 }
 
 uchar*
diff --git a/src/libdraw/md-defont.c b/src/libdraw/md-defont.c
index 446c2e9..1e9e01e 100644
--- a/src/libdraw/md-defont.c
+++ b/src/libdraw/md-defont.c
@@ -21,7 +21,7 @@
 	 * declared as char*, not u32int*.
 	 */
 	p = (char*)defontdata;
-	n = (u32int)p & 3;
+	n = (ulong)p & 3;
 	if(n != 0){
 		memmove(p+(4-n), p, sizeofdefont-n);
 		p += 4-n;
diff --git a/src/libdraw/md-fillpoly.c b/src/libdraw/md-fillpoly.c
index 928ae1e..fcacae5 100644
--- a/src/libdraw/md-fillpoly.c
+++ b/src/libdraw/md-fillpoly.c
@@ -126,7 +126,7 @@
 	long z;
 
 	z = x%y;
-	if((long)(((u32int)z)^((u32int)y)) > 0 || z == 0)
+	if((long)(((ulong)z)^((ulong)y)) > 0 || z == 0)
 		return z;
 	return z + y;
 }
@@ -134,7 +134,7 @@
 static long
 sdiv(long x, long y)
 {
-	if((long)(((u32int)x)^((u32int)y)) >= 0 || x == 0)
+	if((long)(((ulong)x)^((ulong)y)) >= 0 || x == 0)
 		return x/y;
 
 	return (x+((y>>30)|1))/y-1;
