diff --git a/modules/gui/pymod/export_data_viewer.cc b/modules/gui/pymod/export_data_viewer.cc
index 6efdef65e1a980d4a77b4b79111a0e77bd38babf..dbaa30ace761f80c9284b634ddd2d6140f6dda97 100644
--- a/modules/gui/pymod/export_data_viewer.cc
+++ b/modules/gui/pymod/export_data_viewer.cc
@@ -42,24 +42,21 @@ void add_dock1(DataViewer* p, QWidget* w, const String& name)
   p->AddDockWidget(w,QString::fromStdString(name));
 }
 
-void add_dock2(DataViewer* p, QWidget* w, const QString& name)
-{
-  p->AddDockWidget(w,name);
-}
-
-void add_dock3(DataViewer* p, QWidget* w, const String& name, bool s)
+void add_dock2(DataViewer* p, QWidget* w, const String& name, bool s)
 {
   p->AddDockWidget(w,QString::fromStdString(name),s);
 }
 
-void add_dock4(DataViewer* p, QWidget* w, const QString& name, bool s)
+
+void add_dock3(DataViewer* p, QWidget* w, const String& name, bool s, int area)
 {
-  p->AddDockWidget(w,name,s);
+  p->AddDockWidget(w,QString::fromStdString(name),s,area);
 }
 
 } // anon ns
 
 BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(o_AddOverlay, AddOverlay, 1, 2)
+BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(o_AddDockWidget, AddDockWidget, 2, 4)
 
 void export_data_viewer()
 {
@@ -75,8 +72,10 @@ void export_data_viewer()
     .def("SetSelection",&DataViewer::SetSelection)
     .def("UpdateView",&DataViewer::UpdateView)
     .def("Recenter",&DataViewer::Recenter)
+    .def("AddDockWidget",&DataViewer::AddDockWidget,o_AddDockWidget())
     .def("AddDockWidget",add_dock1)
     .def("AddDockWidget",add_dock2)
+    .def("AddDockWidget",add_dock3)
     .def("SetSlab", &DataViewer::SetSlab)
     .def("GetSlab", &DataViewer::GetSlab)
     .add_property("slab", &DataViewer::GetSlab, &DataViewer::SetSlab)
@@ -98,8 +97,6 @@ void export_data_viewer()
     .def("SetOffset", &DataViewer::SetOffset)
     .def("GetOffset", &DataViewer::GetOffset)
     .add_property("offset", &DataViewer::GetOffset, &DataViewer::SetOffset)
-    .def("AddDockWidget",add_dock3)
-    .def("AddDockWidget",add_dock4)
     .def("RemoveDockWidget",&DataViewer::RemoveDockWidget)
     .def("SetAntialiasing",&DataViewer::SetAntialiasing)
     .def("Show",&DataViewer::show)
diff --git a/modules/gui/src/data_viewer/data_viewer.cc b/modules/gui/src/data_viewer/data_viewer.cc
index 8db37d504cbb4556e365c6e3ffd293a6ad7a5b51..64896c8a76022a6098ffc66a18f8b00554b9cca3 100644
--- a/modules/gui/src/data_viewer/data_viewer.cc
+++ b/modules/gui/src/data_viewer/data_viewer.cc
@@ -278,9 +278,9 @@ void DataViewer::build(const Data& data)
   statusBar()->addWidget(zoomlabel_);
   statusBar()->addWidget(slablabel_);
 
-  AddDockWidget(ov_manager_gui_,"Overlays",true,0);
+  AddDockWidget(ov_manager_gui_,"Overlays",true,2);
   info_->SetImageInfo(data);
-  AddDockWidget(info_,"Info",true,0);
+  AddDockWidget(info_,"Info",true,2);
   AddDockWidget(argand_,"Argand",false,1);
   AddDockWidget(fft_,"FFT",false,1);
 
diff --git a/modules/gui/src/data_viewer/info_panel.cc b/modules/gui/src/data_viewer/info_panel.cc
index f90d45b17feb18b469fb205e4ad36f684f395932..a593884b16e90db34d864fa075c118adab3f22bf 100644
--- a/modules/gui/src/data_viewer/info_panel.cc
+++ b/modules/gui/src/data_viewer/info_panel.cc
@@ -64,9 +64,9 @@ InfoPanel::InfoPanel(QWidget* parent):
   QFont fnt=font();
   fnt.setPointSize(font().pointSize()-1);
   setFont(fnt);
-  int maxw = QFontMetrics(fnt).width("(9999,9999,1) to (9999,9999,1)");
-  setMaximumWidth(maxw);
-  setMinimumWidth(maxw);
+  //int maxw = QFontMetrics(fnt).width("(9999,9999,1) to (9999,9999,1)");
+  //setMaximumWidth(maxw);
+  //setMinimumWidth(maxw);
 
   QFont fnt2(fnt);
   fnt2.setWeight(QFont::Bold);
diff --git a/modules/gui/src/main_window.cc b/modules/gui/src/main_window.cc
index f8f428c4350577a4873a2e021727bd2b203ffd92..098e7cfabab81a14ffe20a9c0963f4949d9f257d 100644
--- a/modules/gui/src/main_window.cc
+++ b/modules/gui/src/main_window.cc
@@ -39,11 +39,28 @@ MainWindow::MainWindow(QWidget* parent, Qt::WindowFlags flags):
 
 void MainWindow::AddDockWidget(QWidget* w, const QString& name, bool shown, int area)
 {
+  Qt::DockWidgetArea dock_area;
+  switch(area){
+    case 1:
+      dock_area=Qt::LeftDockWidgetArea;
+      break;
+    case 2:
+      dock_area=Qt::RightDockWidgetArea;
+      break;
+    case 4:
+      dock_area=Qt::TopDockWidgetArea;
+      break;
+    case 8:
+      dock_area=Qt::BottomDockWidgetArea;
+      break;
+    default:
+      dock_area=Qt::RightDockWidgetArea;
+      break;
+  }
   DockWidget* dock = new DockWidget(name, this);
   dock->adjustSize();
-  dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
   dock->setWidget(w);
-  addDockWidget(area==0 ? Qt::RightDockWidgetArea : Qt::LeftDockWidgetArea, dock);
+  addDockWidget(dock_area, dock);
   dock_widget_map_[w]=dock;
   connect(dock,SIGNAL(OnClose(QDockWidget*)),this,SLOT(OnDockClose(QDockWidget*)));
   if(!shown) dock->hide();
diff --git a/modules/gui/src/main_window.hh b/modules/gui/src/main_window.hh
index 2b273f36dd5426f292d9c596537a6581e17916ae..61c6055d15225830ab30b1ba8ac476f43a6e6801 100644
--- a/modules/gui/src/main_window.hh
+++ b/modules/gui/src/main_window.hh
@@ -46,7 +46,7 @@ public:
   MainWindow(QWidget* parent=0, Qt::WindowFlags flags=0);
 
   //! add a custom docking widget
-  void AddDockWidget(QWidget* w, const QString& name, bool show=true, int area=0);
+  void AddDockWidget(QWidget* w, const QString& name, bool show=true, int area=2);
   //! remove a previously added custom docking widget
   void RemoveDockWidget(QWidget* w);