diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java
index c63f24d5e7d32923621c9386b15e77a697d12da2..a82cdb0fa07774589948375b8d8ca781a0ba01a4 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/AbstractBrowserGrid.java
@@ -252,6 +252,14 @@ public abstract class AbstractBrowserGrid<T/* Entity */, M extends BaseEntityMod
         contentPanel.setBottomComponent(bottomToolbars);
         contentPanel.setHeaderVisible(showHeader);
         contentPanel.setAutoWidth(true);
+        filterToolbar.addListener(Events.AfterLayout, new Listener<BaseEvent>()
+            {
+                public void handleEvent(BaseEvent be)
+                {
+                    // fixes problem of hidden paging toolbar
+                    contentPanel.syncSize();
+                }
+            });
         columnListener = new ColumnListener<T, M>(grid);
         registerLinkClickListenerFor(Dict.CODE, new ICellListener<T>()
             {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnSettingsChooser.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnSettingsChooser.java
index 9860d3bdbcd5b3cf173865c2cecba35c63b21396..9709dbde0f4168147ba748a85e280709abd3d61a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnSettingsChooser.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/ColumnSettingsChooser.java
@@ -175,8 +175,9 @@ class ColumnSettingsChooser
             add(new SeparatorToolItem());
             add(new WidgetComponent(createLink(Selectable.VISIBLE, false)));
             add(new SeparatorToolItem());
-            add(new WidgetComponent(createLink(Selectable.FILTER, true)));
-            add(new SeparatorToolItem());
+            // WORKAROUND to fix problems with layout when all many filters are shown
+            // add(new WidgetComponent(createLink(Selectable.FILTER, true)));
+            // add(new SeparatorToolItem());
             add(new WidgetComponent(createLink(Selectable.FILTER, false)));
             add(new FillToolItem());
             Button up = new Button("Move Up");
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/FilterToolbar.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/FilterToolbar.java
index 2690ea2a240bff15229820505866fe936431e6c8..7194c0a29f413f07977792716b2bc7ee58f3eb05 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/FilterToolbar.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/grid/expressions/filter/FilterToolbar.java
@@ -5,7 +5,6 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import com.extjs.gxt.ui.client.Style.Orientation;
 import com.extjs.gxt.ui.client.data.ModelData;
 import com.extjs.gxt.ui.client.event.ButtonEvent;
 import com.extjs.gxt.ui.client.event.ComponentEvent;
@@ -14,10 +13,10 @@ import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
 import com.extjs.gxt.ui.client.event.SelectionChangedListener;
 import com.extjs.gxt.ui.client.event.SelectionListener;
 import com.extjs.gxt.ui.client.widget.Component;
-import com.extjs.gxt.ui.client.widget.LayoutContainer;
+import com.extjs.gxt.ui.client.widget.ContentPanel;
+import com.extjs.gxt.ui.client.widget.button.ButtonGroup;
 import com.extjs.gxt.ui.client.widget.form.Field;
 import com.extjs.gxt.ui.client.widget.form.TriggerField;
-import com.extjs.gxt.ui.client.widget.layout.FillLayout;
 import com.extjs.gxt.ui.client.widget.toolbar.LabelToolItem;
 import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
 import com.google.gwt.user.client.ui.Widget;
@@ -58,7 +57,7 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb
     // stores the state of column filters, even if custom filter is currently used
     private final List<IColumnFilterWidget<T>> columnFilters;
 
-    private final LayoutContainer filterContainer;
+    private final ContentPanel filterContainer;
 
     private final FilterSelectionWidget filterSelectionWidget;
 
@@ -79,8 +78,7 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb
         add(new LabelToolItem(messageProvider.getMessage(Dict.FILTER) + ": "));
         filterSelectionWidget =
                 new FilterSelectionWidget(viewContext, gridId, displayTypeIDProvider);
-        filterContainer = new LayoutContainer(new FillLayout(Orientation.HORIZONTAL));
-        filterContainer.setLayoutOnChange(true); // fixes jumping filter fields in firefox
+        filterContainer = new ButtonGroup(6); // 6 filter fields fit into browser with 1024px width
         add(filterSelectionWidget);
         add(filterContainer);
         applyTool = new TextToolItem(messageProvider.getMessage(Dict.APPLY_FILTER));
@@ -239,7 +237,8 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb
     // copes well with cases when one filter widget changes into another.
     private void updateFilterContainer(List<Widget> filterWidgets)
     {
-
+        boolean changed = false;
+        filterContainer.disableEvents(true);
         for (int i = 0; i < filterWidgets.size(); i++)
         {
             Widget filterWidget = filterWidgets.get(i);
@@ -250,15 +249,24 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb
                 {
                     filterContainer.remove(previousItem);
                     filterContainer.insert(filterWidget, i);
+                    changed = true;
                 }
             } else
             {
                 filterContainer.add(filterWidget);
+                changed = true;
             }
         }
         for (int i = filterWidgets.size(); i < filterContainer.getItemCount(); i++)
         {
             filterContainer.remove(filterContainer.getItem(i));
+            changed = true;
+        }
+        filterContainer.enableEvents(true);
+        if (changed)
+        {
+            // contentPanel of AbstractBrowserGrid is listening on this layout and synchronizes size
+            layout();
         }
     }
 
@@ -513,4 +521,5 @@ public class FilterToolbar<T> extends ToolBar implements IDatabaseModificationOb
         }
         return filteredColumnsIds;
     }
+
 }