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 5af82c95412a70473a65db79378fbbfd8c724acd..98b38d71173742f894c29f06b2de7dfd5336a50d 100644
--- a/modules/gui/src/data_viewer/data_viewer_panel_base.cc
+++ b/modules/gui/src/data_viewer/data_viewer_panel_base.cc
@@ -431,7 +431,7 @@ void DataViewerPanelBase::paintEvent(QPaintEvent* event)
   painter.drawPixmap(QPoint(0,0),*pixmap_);
 #endif
 
-  if(zoom_level_ >= 6 && display_pixel_values_) {
+  if(zoom_level_ >= 7 && display_pixel_values_) {
     draw_pixel_values(painter);
   }
 
@@ -1009,20 +1009,37 @@ void DataViewerPanelBase::draw_pixel_values(QPainter& painter)
 
   QFont fnt("Courier",(zoom_level_-6)*2+7);
   painter.setFont(fnt);
-  
-  for(int i = 0; i <= (b[0] - a[0]); ++i) {
-    for(int j = 0; j <= (b[1] - a[1]); ++j) {
-      Real pixel_value = GetObservedData().GetReal(Point(a[0]+i, 
-                                                               a[1]+j,slab_));
-      QString value_string = QString("%1").arg(pixel_value,0,'g',5);
-      Real rv = GetNormalizer()->Convert(pixel_value);
-      QPoint p = FracPointToWinCenter(geom::Vec2(static_cast<Real>(a[0]+i),
-                                                 static_cast<Real>(a[1]+j)));
-      unsigned char rgb = (rv>130.0) ? 0 : 255;
-      painter.setPen(QColor(rgb,rgb,rgb));
-      int string_h=painter.fontMetrics().height();
-      int string_w=painter.fontMetrics().width(value_string);
-      painter.drawText(p.x() - string_w/2, p.y() + string_h/2, value_string);
+  if(GetObservedData().GetType()==REAL){
+    for(int i = 0; i <= (b[0] - a[0]); ++i) {
+      for(int j = 0; j <= (b[1] - a[1]); ++j) {
+        Real pixel_value = GetObservedData().GetReal(Point(a[0]+i,
+                                                                 a[1]+j,slab_));
+        QString value_string = QString("%1").arg(pixel_value,0,'g',5);
+        Real rv = GetNormalizer()->Convert(pixel_value);
+        QPoint p = FracPointToWinCenter(geom::Vec2(static_cast<Real>(a[0]+i),
+                                                   static_cast<Real>(a[1]+j)));
+        unsigned char rgb = (rv>130.0) ? 0 : 255;
+        painter.setPen(QColor(rgb,rgb,rgb));
+        int string_h=painter.fontMetrics().height();
+        int string_w=painter.fontMetrics().width(value_string);
+        painter.drawText(p.x() - string_w/2, p.y() + string_h/2, value_string);
+      }
+    }
+  }else{
+    for(int i = 0; i <= (b[0] - a[0]); ++i) {
+      for(int j = 0; j <= (b[1] - a[1]); ++j) {
+        Complex pixel_value = GetObservedData().GetComplex(Point(a[0]+i,
+                                                                 a[1]+j,slab_));
+        QString value_string = QString("%1+i%2").arg(pixel_value.real(),0,'g',5).arg(pixel_value.imag(),0,'g',5);
+        Real rv = GetNormalizer()->Convert(abs(pixel_value));
+        QPoint p = FracPointToWinCenter(geom::Vec2(static_cast<Real>(a[0]+i),
+                                                   static_cast<Real>(a[1]+j)));
+        unsigned char rgb = (rv>130.0) ? 0 : 255;
+        painter.setPen(QColor(rgb,rgb,rgb));
+        int string_h=painter.fontMetrics().height();
+        int string_w=painter.fontMetrics().width(value_string);
+        painter.drawText(p.x() - string_w/2, p.y() + string_h/2, value_string);
+      }
     }
   }
 }