--- data/theme/gnome-shell.css	2011-11-10 18:51:47.177112583 +0100
+++ /usr/share/gnome-shell/theme/gnome-shell.css	2011-11-13 18:57:23.713253091 +0100
@@ -85,7 +85,7 @@
     padding: 2px 12px;
     background-color: rgba(0,0,0,0.9);
     color: #ffffff;
-    font-size: 0.8em;
+    font-size: 1em;
     font-weight: normal;
     text-align: center;
 }
@@ -470,7 +470,7 @@
     background: rgba(0,0,0,0.8);
     border: 1px solid rgba(128,128,128,0.40);
     border-radius: 10px;
-    font-size: 9pt;
+    font-size: 10.5pt;
     padding: 2px 8px;
     -shell-caption-spacing: 4px;
 }
@@ -602,7 +602,8 @@
     padding: 4px 12px;
     spacing: 4px;
     color: #6f6f6f;
-    font-size: .8em;
+    font-size: 10.5pt;
+    font-weight: bold;
 }
 
 .search-section-results {
@@ -648,12 +649,20 @@
 
 .icon-grid {
     spacing: 36px;
-    -shell-grid-item-size: 118px;
+    -shell-grid-item-size: 142px;
+}
+
+.icon-grid .overview-icon {
+    /* We need this to be a fixed size rather than get dynamically resized
+     * by the content as we put a fixed size background on it for "running"
+     * applications */
+    width: 142px;
+    height: 142px;
 }
 
 .contact-grid {
     spacing: 36px;
-    -shell-grid-item-size: 272px; /* 2 * -shell-grid-item-size + spacing */
+    -shell-grid-item-size: 320px; /* 2 * -shell-grid-item-size + spacing */
 }
 
 .icon-grid .overview-icon {
@@ -716,15 +725,15 @@
     border-radius: 4px;
     padding: 3px;
     border: 1px rgba(0,0,0,0);
-    font-size: 7.5pt;
+    font-size: 10.5pt;
     color: white;
     transition-duration: 100;
     text-align: center;
 }
 
 .contact {
-    width: 272px; /* Same width as two normal results + spacing */
-    height: 118px; /* Aspect ratio = 1.75. Normal US business card ratio */
+    width: 320px; /* Same width as two normal results + spacing */
+    height: 182px; /* Aspect ratio = 1.75. Normal US business card ratio */
     border-radius: 4px;
     padding: 3px;
     border: 1px rgba(0,0,0,0);
@@ -793,7 +802,6 @@
 }
 
 .app-well-menu {
-    font-size: 9pt;
 }
 
 /* LookingGlass */
@@ -1481,7 +1489,7 @@
     border-radius: 24px;
     padding: 20px;
 
-    font-size: 9pt;
+    font-size: 10.5pt;
     color: white;
 }
 
--- js/ui/iconGrid.js	2011-11-10 18:51:16.587820831 +0100
+++ /usr/share/gnome-shell/js/ui/iconGrid.js	2011-11-13 18:29:39.778366753 +0100
@@ -3,6 +3,7 @@
 const Clutter = imports.gi.Clutter;
 const Shell = imports.gi.Shell;
 const St = imports.gi.St;
+const Pango = imports.gi.Pango;
 
 const Lang = imports.lang;
 const Params = imports.misc.params;
@@ -43,6 +44,9 @@
 
         if (params.showLabel) {
             this.label = new St.Label({ text: label });
+            this.label.clutter_text.line_wrap = true;
+            this.label.clutter_text.line_wrap_mode = Pango.WrapMode.WORD_CHAR;
+            this.label.clutter_text.ellipsize = Pango.EllipsizeMode.END;
             box.add_actor(this.label);
         } else {
             this.label = null;
@@ -59,37 +63,47 @@
         let availWidth = box.x2 - box.x1;
         let availHeight = box.y2 - box.y1;
 
-        let iconSize = availHeight;
-
         let [iconMinHeight, iconNatHeight] = this._iconBin.get_preferred_height(-1);
         let [iconMinWidth, iconNatWidth] = this._iconBin.get_preferred_width(-1);
         let preferredHeight = iconNatHeight;
 
+        let padding = Math.floor((availHeight - iconNatHeight) / 2);
+
         let childBox = new Clutter.ActorBox();
 
         if (this.label) {
-            let [labelMinHeight, labelNatHeight] = this.label.get_preferred_height(-1);
+            // In order to support multiple lines and ellipsing, we consider
+            // the minimum space for the label to be whatever is left after
+            // the icon has taken what it wants.
+            let labelMinHeight = availHeight - preferredHeight - this._spacing;
+            let [dummy, labelNatHeight] = this.label.get_preferred_height(availWidth);
+
             preferredHeight += this._spacing + labelNatHeight;
 
             let labelHeight = availHeight >= preferredHeight ? labelNatHeight
                                                              : labelMinHeight;
-            iconSize -= this._spacing + labelHeight;
+
+            padding -= Math.floor((this._spacing + labelHeight) / 2);
 
             childBox.x1 = 0;
             childBox.x2 = availWidth;
-            childBox.y1 = iconSize + this._spacing;
-            childBox.y2 = childBox.y1 + labelHeight;
+            childBox.y2 = availHeight - padding;
+            childBox.y1 = childBox.y2 - labelHeight;
             this.label.allocate(childBox, flags);
         }
 
         childBox.x1 = Math.floor((availWidth - iconNatWidth) / 2);
-        childBox.y1 = Math.floor((iconSize - iconNatHeight) / 2);
         childBox.x2 = childBox.x1 + iconNatWidth;
+        childBox.y1 = padding;
         childBox.y2 = childBox.y1 + iconNatHeight;
         this._iconBin.allocate(childBox, flags);
     },
 
     _getPreferredWidth: function(actor, forHeight, alloc) {
+        // FIXME: This tries to acheive a square box by setting the width to
+        //        the same as the height. Unfortunatly we have trouble
+        //        calculating the correct height given multiple lines here
+        //        as the limits are set by the containing widget.
         this._getPreferredHeight(actor, -1, alloc);
     },
 
