diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ExtendedGridView.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ExtendedGridView.java
index c0f0c3da185080ea9a9111988cb8be97e15847a5..3651f07e5a89b1e47db56b97d53265759240b927 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ExtendedGridView.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ExtendedGridView.java
@@ -1,5 +1,8 @@
 package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import com.extjs.gxt.ui.client.data.ModelData;
 import com.extjs.gxt.ui.client.event.ComponentEvent;
 import com.extjs.gxt.ui.client.event.GridEvent;
@@ -7,6 +10,8 @@ import com.extjs.gxt.ui.client.widget.grid.ColumnHeader;
 import com.extjs.gxt.ui.client.widget.grid.Grid;
 import com.extjs.gxt.ui.client.widget.grid.GridView;
 import com.extjs.gxt.ui.client.widget.menu.Menu;
+import com.google.gwt.dom.client.Node;
+import com.google.gwt.dom.client.NodeList;
 import com.google.gwt.user.client.Element;
 
 /**
@@ -83,10 +88,19 @@ class ExtendedGridView extends GridView
         headerCell.getStyle().setProperty("width", "auto");
         for (int i = 0; i < pGrid.getStore().getCount(); i++)
         {
-            Element cell = (Element) view.getCell(i, column).getFirstChildElement();
-            cell.getStyle().setWidth(0, com.google.gwt.dom.client.Style.Unit.PX);
-            int width = cell.getScrollWidth();
-            cell.getStyle().setProperty("width", "auto");
+            Element td = (Element) view.getCell(i, column);
+            List<Node> nodes = extractNodes(td);
+            for (Node n : nodes)
+            {
+                if (Element.is(n))
+                {
+                    Element.as(n).getStyle().setWidth(0, com.google.gwt.dom.client.Style.Unit.PX);
+                }
+            }
+            Element element = (Element) td.getFirstChildElement();
+            element.getStyle().setWidth(0, com.google.gwt.dom.client.Style.Unit.PX);
+            int width = element.getScrollWidth();
+            element.getStyle().setProperty("width", "auto");
             if (width > max)
             {
                 max = width;
@@ -95,6 +109,32 @@ class ExtendedGridView extends GridView
         return max;
     }
 
+    private List<Node> extractNodes(Element element)
+    {
+        List<Node> visited = new ArrayList<Node>();
+        List<Node> toVisit = new ArrayList<Node>();
+        toVisit.add(element);
+        while (toVisit.isEmpty() == false)
+        {
+            Node n = toVisit.get(0);
+            toVisit.remove(n);
+            if (visited.contains(n) == false)
+            {
+                visited.add(n);
+                NodeList<Node> childNodes = n.getChildNodes();
+                for (int j = 0; j < childNodes.getLength(); j++)
+                {
+                    Node c = childNodes.getItem(j);
+                    if (toVisit.contains(c) == false)
+                    {
+                        toVisit.add(c);
+                    }
+                }
+            }
+        }
+        return visited;
+    }
+
     private int calculateHeaderCellIndex(Grid<ModelData> pGrid, int column)
     {
         // WORKAROUND: getHeaderCell takes into account only visible columns