diff --git a/modules/gui/pymod/export_data_viewer.cc b/modules/gui/pymod/export_data_viewer.cc
index 1a3ada014c63e320b7448a0896238fa169a280b0..6efdef65e1a980d4a77b4b79111a0e77bd38babf 100644
--- a/modules/gui/pymod/export_data_viewer.cc
+++ b/modules/gui/pymod/export_data_viewer.cc
@@ -67,8 +67,7 @@ void export_data_viewer()
     .def("SetData",&DataViewer::SetData)
     .def("SetName",&DataViewer::SetName)
     .def("GetOverlayManager",&DataViewer::GetOverlayManager)
-    .def("GetNormalizer",&DataViewer::GetNormalizer,
-	 return_value_policy<return_by_value>())
+    .def("GetNormalizer",&DataViewer::GetNormalizer,return_value_policy<return_by_value>())
     .def("Renormalize",&DataViewer::Renormalize)
     .def("AddOverlay",&DataViewer::AddOverlay,o_AddOverlay())
     .def("ClearOverlays",&DataViewer::ClearOverlays)
@@ -81,6 +80,24 @@ void export_data_viewer()
     .def("SetSlab", &DataViewer::SetSlab)
     .def("GetSlab", &DataViewer::GetSlab)
     .add_property("slab", &DataViewer::GetSlab, &DataViewer::SetSlab)
+    .def("SetZoomScale", &DataViewer::SetZoomScale)
+    .def("GetZoomScale", &DataViewer::GetZoomScale)
+    .add_property("zoomscale", &DataViewer::GetZoomScale, &DataViewer::SetZoomScale)
+    .def("SetViewerMin", &DataViewer::SetViewerMin)
+    .def("GetViewerMin", &DataViewer::GetViewerMin)
+    .add_property("viewer_min", &DataViewer::GetViewerMin, &DataViewer::SetViewerMin)
+    .def("SetViewerMax", &DataViewer::SetViewerMax)
+    .def("GetViewerMax", &DataViewer::GetViewerMax)
+    .add_property("viewer_max", &DataViewer::GetViewerMax, &DataViewer::SetViewerMax)
+    .def("SetGamma", &DataViewer::SetGamma)
+    .def("GetGamma", &DataViewer::GetGamma)
+    .add_property("gamma", &DataViewer::GetGamma, &DataViewer::SetGamma)
+    .def("SetInvert", &DataViewer::SetInvert)
+    .def("GetInvert", &DataViewer::GetInvert)
+    .add_property("invert", &DataViewer::GetInvert, &DataViewer::SetInvert)
+    .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)
diff --git a/modules/gui/src/data_viewer/data_viewer.cc b/modules/gui/src/data_viewer/data_viewer.cc
index a0d75b28f02c392663832d1e4b02d427326115e1..2bc7d368f8ce6b178a01d9580de9d7d383edddd2 100644
--- a/modules/gui/src/data_viewer/data_viewer.cc
+++ b/modules/gui/src/data_viewer/data_viewer.cc
@@ -134,6 +134,66 @@ int DataViewer::GetSlab() const
   return panel_->GetSlab();
 }
 
+void DataViewer::SetZoomScale(Real zoomscale)
+{
+  panel_->SetZoomScale(zoomscale);
+}
+
+Real DataViewer::GetZoomScale() const
+{
+  return panel_->GetZoomScale();
+}
+
+void DataViewer::SetViewerMin(Real min)
+{
+  panel_->SetViewerMin(min);
+}
+
+Real DataViewer::GetViewerMin() const
+{
+  return panel_->GetViewerMin();
+}
+
+void DataViewer::SetViewerMax(Real max)
+{
+  panel_->SetViewerMax(max);
+}
+
+Real DataViewer::GetViewerMax() const
+{
+  return panel_->GetViewerMax();
+}
+
+void DataViewer::SetGamma(Real gamma)
+{
+  panel_->SetGamma(gamma);
+}
+
+Real DataViewer::GetGamma() const
+{
+  return panel_->GetGamma();
+}
+
+void DataViewer::SetInvert(bool invert)
+{
+  panel_->SetInvert(invert);
+}
+
+bool DataViewer::GetInvert() const
+{
+  return panel_->GetInvert();
+}
+
+void DataViewer::SetOffset(const geom::Vec2& offset)
+{
+  panel_->SetOffset(offset);
+}
+
+geom::Vec2 DataViewer::GetOffset() const
+{
+  return panel_->GetOffset();
+}
+
 int DataViewer::AddOverlay(const OverlayPtr& ov, bool make_active)
 {
   int retval= ov_manager_->AddOverlay(ov,make_active);
diff --git a/modules/gui/src/data_viewer/data_viewer.hh b/modules/gui/src/data_viewer/data_viewer.hh
index 6594b588cfb4a00b9710d8da4dcd618680b64d3b..e9e417f6b0c6a0076ab728ae8dd60b0dacabf71d 100644
--- a/modules/gui/src/data_viewer/data_viewer.hh
+++ b/modules/gui/src/data_viewer/data_viewer.hh
@@ -104,9 +104,41 @@ public:
   //! event filter for DataViewerPanel
   virtual bool eventFilter(QObject * object, QEvent *event);
 
-  void SetSlab(int slab);  
+  //! set z slab
+  void SetSlab(int slab);
+  //! get z slab
   int GetSlab() const;
 
+  //! set zoom scale (range: 1e-8 to 1e8)
+  void SetZoomScale(Real zoomscale);
+  //! get zoom scale (range: 1e-8 to 1e8)
+  Real GetZoomScale() const;
+
+  //! set minimum level of the viewer (e.g. the value that will be displayed as black)
+  void SetViewerMin(Real min);
+  //! get minimum level of the viewer (e.g. the value that will be displayed as black)
+  Real GetViewerMin() const;
+
+  //! set maximum level of the viewer (e.g. the value that will be displayed as white)
+  void SetViewerMax(Real max);
+  //! get maximum level of the viewer (e.g. the value that will be displayed as white)
+  Real GetViewerMax() const;
+
+  //! set viewer gamma
+  void SetGamma(Real gamma);
+  //! get viewer gamma
+  Real GetGamma() const;
+
+  //! set invert flag
+  void SetInvert(bool invert);
+  //! get invert flag
+  bool GetInvert() const;
+
+  //! set image offset
+  void SetOffset(const geom::Vec2& offset);
+  //! get image offset
+  geom::Vec2 GetOffset() const;
+
 signals:
   void released();
 
diff --git a/modules/gui/src/data_viewer/data_viewer_panel_base.cc b/modules/gui/src/data_viewer/data_viewer_panel_base.cc
index 9249bef7d2bf66487ef423ad37f50e9f4e506ae0..1da089d2dffdc1c07897622c67ed4a9798a4559a 100644
--- a/modules/gui/src/data_viewer/data_viewer_panel_base.cc
+++ b/modules/gui/src/data_viewer/data_viewer_panel_base.cc
@@ -939,6 +939,53 @@ void DataViewerPanelBase::SetInvert(bool invert)
   UpdateView(true);
 }
 
+Real DataViewerPanelBase::GetGamma() const
+{
+  return normalizer_->GetGamma();
+}
+
+void DataViewerPanelBase::SetGamma(Real gamma)
+{
+  UpdateNormalizer(normalizer_->GetMinimum(),
+                   normalizer_->GetMaximum(),
+                   gamma,normalizer_->GetInvert());
+  UpdateView(true);
+}
+
+Real DataViewerPanelBase::GetViewerMin() const
+{
+  return normalizer_->GetMinimum();
+}
+
+void DataViewerPanelBase::SetViewerMin(Real min)
+{
+  UpdateNormalizer(min,normalizer_->GetMaximum(),normalizer_->GetGamma(),normalizer_->GetInvert());
+  UpdateView(true);
+}
+
+Real DataViewerPanelBase::GetViewerMax() const
+{
+  return normalizer_->GetMaximum();
+}
+
+void DataViewerPanelBase::SetViewerMax(Real max)
+{
+  UpdateNormalizer(normalizer_->GetMinimum(),max,normalizer_->GetGamma(),normalizer_->GetInvert());
+  UpdateView(true);
+}
+
+geom::Vec2 DataViewerPanelBase::GetOffset() const
+{
+  return geom::Vec2(offset_x_,offset_y_);
+}
+
+void DataViewerPanelBase::SetOffset(const geom::Vec2& offset)
+{
+  offset_x_=offset[0];
+  offset_y_=offset[1];
+  UpdateView(true);
+}
+
 void DataViewerPanelBase::SetAntialiasing(bool f)
 {
   antialiasing_=f;
diff --git a/modules/gui/src/data_viewer/data_viewer_panel_base.hh b/modules/gui/src/data_viewer/data_viewer_panel_base.hh
index 9e165925e8e516f9320ee85da51ca895eb1b806c..4c4b59bb5df8bb4df9853d6f10dd42d577e78ed0 100644
--- a/modules/gui/src/data_viewer/data_viewer_panel_base.hh
+++ b/modules/gui/src/data_viewer/data_viewer_panel_base.hh
@@ -177,6 +177,12 @@ public:
   Real GetDataMax() const;
   bool GetInvert() const;
   void SetInvert(bool invert);
+  Real GetGamma() const;
+  void SetGamma(Real gamma);
+  void SetViewerMin(Real min);
+  Real GetViewerMin() const;
+  void SetViewerMax(Real max);
+  Real GetViewerMax() const;
   void UpdateNormalizer(Real min, Real max, Real gamma, bool invert);
   int GetSlab();
   void SetSlab(int slab);
@@ -184,6 +190,10 @@ public:
   int GetSelectionMode();
   void SetAntialiasing(bool f);
   bool GetAntialiasing() const;
+  geom::Vec2 GetOffset() const;
+  void SetOffset(const geom::Vec2& offset);
+
+
 
 signals:
   void clicked(const geom::Vec3& mousepos);