diff --git a/src/client.c b/src/client.c
index cdd068a4e8d7a3b0cb9b7ad04c6acfde96142dbe..5eb3abe3a38223eb0be4bafc09d59bf0a125005f 100644
--- a/src/client.c
+++ b/src/client.c
@@ -1065,7 +1065,7 @@ clientGetNetStruts (Client * c)
         CLIENT_FLAG_SET (c, CLIENT_FLAG_HAS_STRUTS);
         for (i = 0; i < 4; i++)
         {
-            c->struts[i] = struts[i];
+            c->struts[i] = (int) struts[i];
         }
 
         TRACE ("NET_WM_STRUT for window \"%s\"= (%d,%d,%d,%d)", c->name,
@@ -1393,46 +1393,46 @@ clientCoordGravitate (Client * c, int mode, int *x, int *y)
     switch (c->gravity)
     {
         case CenterGravity:
-            dx = (c->border_width << 1) - ((frameLeft (c) +
-                    frameRight (c)) >> 1);
-            dy = (c->border_width << 1) - ((frameTop (c) +
-                    frameBottom (c)) >> 1);
+            dx = (c->border_width * 2) - ((frameLeft (c) +
+                    frameRight (c)) / 2);
+            dy = (c->border_width * 2) - ((frameTop (c) +
+                    frameBottom (c)) / 2);
             break;
         case NorthGravity:
-            dx = (c->border_width << 1) - ((frameLeft (c) +
-                    frameRight (c)) >> 1);
+            dx = (c->border_width * 2) - ((frameLeft (c) +
+                    frameRight (c)) / 2);
             dy = frameTop (c);
             break;
         case SouthGravity:
-            dx = (c->border_width << 1) - ((frameLeft (c) +
-                    frameRight (c)) >> 1);
-            dy = (c->border_width << 1) - frameBottom (c);
+            dx = (c->border_width * 2) - ((frameLeft (c) +
+                    frameRight (c)) / 2);
+            dy = (c->border_width * 2) - frameBottom (c);
             break;
         case EastGravity:
-            dx = (c->border_width << 1) - frameRight (c);
-            dy = (c->border_width << 1) - ((frameTop (c) +
-                    frameBottom (c)) >> 1);
+            dx = (c->border_width * 2) - frameRight (c);
+            dy = (c->border_width * 2) - ((frameTop (c) +
+                    frameBottom (c)) / 2);
             break;
         case WestGravity:
             dx = frameLeft (c);
-            dy = (c->border_width << 1) - ((frameTop (c) +
-                    frameBottom (c)) >> 1);
+            dy = (c->border_width * 2) - ((frameTop (c) +
+                    frameBottom (c)) / 2);
             break;
         case NorthWestGravity:
             dx = frameLeft (c);
             dy = frameTop (c);
             break;
         case NorthEastGravity:
-            dx = (c->border_width << 1) - frameRight (c);
+            dx = (c->border_width * 2) - frameRight (c);
             dy = frameTop (c);
             break;
         case SouthWestGravity:
             dx = frameLeft (c);
-            dy = (c->border_width << 1) - frameBottom (c);
+            dy = (c->border_width * 2) - frameBottom (c);
             break;
         case SouthEastGravity:
-            dx = (c->border_width << 1) - frameRight (c);
-            dy = (c->border_width << 1) - frameBottom (c);
+            dx = (c->border_width * 2) - frameRight (c);
+            dy = (c->border_width * 2) - frameBottom (c);
             break;
         default:
             dx = 0;
@@ -2088,8 +2088,8 @@ clientConstrainPos (Client * c, gboolean show_full)
     frame_top = frameTop (c);
     frame_left = frameLeft (c);
 
-    cx = frame_x + (frame_width >> 1);
-    cy = frame_y + (frame_height >> 1);
+    cx = frame_x + (frame_width / 2);
+    cy = frame_y + (frame_height / 2);
 
     leftMostHead = isLeftMostHead (dpy, screen, cx, cy);
     rightMostHead = isRightMostHead (dpy, screen, cx, cy);
@@ -4274,8 +4274,8 @@ clientToggleFullscreen (Client * c)
     {
         int cx, cy;
 
-        cx = frameX (c) + (frameWidth (c) >> 1);
-        cy = frameY (c) + (frameHeight (c) >> 1);
+        cx = frameX (c) + (frameWidth (c) / 2);
+        cy = frameY (c) + (frameHeight (c) / 2);
 
         c->fullscreen_old_x = c->x;
         c->fullscreen_old_y = c->y;
@@ -4384,8 +4384,8 @@ clientToggleMaximized (Client * c, int mode)
         return;
     }
 
-    cx = frameX (c) + (frameWidth (c) >> 1);
-    cy = frameY (c) + (frameHeight (c) >> 1);
+    cx = frameX (c) + (frameWidth (c) / 2);
+    cy = frameY (c) + (frameHeight (c) / 2);
 
     left =
         (isLeftMostHead (dpy, screen, cx,
@@ -4683,8 +4683,8 @@ clientSnapPosition (Client * c)
     frame_right = frameRight (c);
     frame_bottom = frameBottom (c);
 
-    cx = frame_x + (frame_width >> 1);
-    cy = frame_y + (frame_height >> 1);
+    cx = frame_x + (frame_width / 2);
+    cy = frame_y + (frame_height / 2);
 
     left =
         (isLeftMostHead (dpy, screen, cx,
@@ -5132,8 +5132,8 @@ clientResize_event_filter (XEvent * xevent, gpointer data)
     frame_right = frameRight (c);
     frame_bottom = frameBottom (c);
 
-    cx = frame_x + (frame_width >> 1);
-    cy = frame_y + (frame_height >> 1);
+    cx = frame_x + (frame_width / 2);
+    cy = frame_y + (frame_height / 2);
 
     left =
         (isLeftMostHead (dpy, screen, cx,
diff --git a/src/hints.c b/src/hints.c
index e381dc7e5d5135eccf25e92ce8a3947e524c29fb..c1a024dbb82f16d241f80e97261000fd656301b4 100644
--- a/src/hints.c
+++ b/src/hints.c
@@ -330,7 +330,7 @@ getGnomeDesktopMargins (Display * dpy, int screen, CARD32 * m)
     Atom real_type;
     int real_format;
     unsigned long items_read, items_left;
-    CARD32 *data = NULL;
+    unsigned long *data = NULL;
 
     TRACE ("entering getGnomeDesktopMargins");
 
@@ -339,10 +339,10 @@ getGnomeDesktopMargins (Display * dpy, int screen, CARD32 * m)
                 &real_type, &real_format, &items_read, &items_left,
                 (unsigned char **) &data) == Success) && (items_read >= 4))
     {
-        m[0] = data[0];
-        m[1] = data[1];
-        m[2] = data[2];
-        m[3] = data[3];
+        m[0] = (int) data[0];
+        m[1] = (int) data[1];
+        m[2] = (int) data[2];
+        m[3] = (int) data[3];
         XFree (data);
     }
     else
@@ -585,17 +585,12 @@ get_cardinal_list (Display * dpy, Window w, Atom xatom,
 void
 set_net_workarea (Display * dpy, int screen, int nb_workspaces, CARD32 * m)
 {
-    CARD32 *data, *ptr;
+    unsigned long *data, *ptr;
     int i, j;
 
     TRACE ("entering set_net_workarea");
     j = (nb_workspaces ? nb_workspaces : 1);
-    data = (CARD32 *) malloc (sizeof (CARD32) * j * 4);
-    if (!data)
-    {
-        gdk_beep ();
-        return;
-    }
+    data = (unsigned long *) g_new (unsigned long, j * 4);
     ptr = data;
     for (i = 0; i < j; i++)
     {
@@ -610,7 +605,7 @@ set_net_workarea (Display * dpy, int screen, int nb_workspaces, CARD32 * m)
     }
     XChangeProperty (dpy, RootWindow (dpy, screen), net_workarea, XA_CARDINAL,
         32, PropModeReplace, (unsigned char *) data, j * 4);
-    free (data);
+    g_free (data);
 }
 
 void