diff --git a/src/plugins/qmldesigner/components/propertyeditor/contextpanewidgetimage.cpp b/src/plugins/qmldesigner/components/propertyeditor/contextpanewidgetimage.cpp
index 0be90c54c79073707fb80b853f8c3d13a7e2ade0..a3c18f716fc87699c6d55cd7b1508995494ca615 100644
--- a/src/plugins/qmldesigner/components/propertyeditor/contextpanewidgetimage.cpp
+++ b/src/plugins/qmldesigner/components/propertyeditor/contextpanewidgetimage.cpp
@@ -184,6 +184,33 @@ void PreviewDialog::setZoom(int z)
 {
     m_zoom = z;
     m_label->setZoom(z);
+    switch (m_zoom) {
+    case 1:
+        m_zoomLabel->setText("100%");
+        m_slider->setValue(1);
+        break;
+    case 2:
+        m_zoomLabel->setText("200%");
+        m_slider->setValue(2);
+        break;
+    case 4:
+        m_zoomLabel->setText("400%");
+        m_slider->setValue(3);
+        break;
+    case 6:
+        m_zoomLabel->setText("600%");
+        m_slider->setValue(4);
+        break;
+    case 8:
+        m_zoomLabel->setText("800%");
+        m_slider->setValue(5);
+        break;
+    case 10:
+        m_zoomLabel->setText("1000%");
+        m_slider->setValue(6);
+        break;
+    default: break;
+    }
     setPixmap(m_pixmap, m_zoom);
 }
 
@@ -446,6 +473,18 @@ PreviewLabel::PreviewLabel(QWidget *parent) : QLabel(parent), m_dragging_top(fal
     m_bottom = 2;
     setMouseTracking(true);
     setCursor(QCursor(Qt::ArrowCursor));
+    m_hooverInfo = new QLabel(parentWidget());
+    m_hooverInfo->hide();
+
+    m_hooverInfo->setFrameShape(QFrame::StyledPanel);
+    m_hooverInfo->setFrameShadow(QFrame::Sunken);
+
+    QGraphicsDropShadowEffect *dropShadowEffect = new QGraphicsDropShadowEffect;
+    dropShadowEffect->setBlurRadius(4);
+    dropShadowEffect->setOffset(2, 2);
+    m_hooverInfo->setGraphicsEffect(dropShadowEffect);
+    m_hooverInfo->setAutoFillBackground(true);
+    m_hooverInfo->raise();
 }
 
 void PreviewLabel::setZoom(int z)
@@ -521,22 +560,33 @@ void PreviewLabel::mousePressEvent(QMouseEvent * event)
             QApplication::setOverrideCursor(QCursor(Qt::SizeHorCursor));
             m_dragging_left = true;
             event->accept();
+            m_hooverInfo->setText("Left " + QString::number(m_left));
+            m_hooverInfo->show();
         } else if (rangeCheck(m_top * m_zoom, event->pos().y())) {
             QApplication::setOverrideCursor(QCursor(Qt::SizeVerCursor));
             m_dragging_top = true;
             event->accept();
+            m_hooverInfo->setText("Top " + QString::number(m_top));
+            m_hooverInfo->show();
         } else if (rangeCheck(m_right * m_zoom, width() - event->pos().x())) {
             QApplication::setOverrideCursor(QCursor(Qt::SizeHorCursor));
             m_dragging_right = true;
             event->accept();
+            m_hooverInfo->setText("Right " + QString::number(m_right));
+            m_hooverInfo->show();
         } else if (rangeCheck(m_bottom * m_zoom, height() - event->pos().y())) {
             QApplication::setOverrideCursor(QCursor(Qt::SizeVerCursor));
             m_dragging_bottom = true;
             event->accept();
+            m_hooverInfo->setText("Bottom " + QString::number(m_bottom));
+            m_hooverInfo->show();
         } else {
             QLabel::mousePressEvent(event);
         }
         m_startPos = event->pos();
+        m_hooverInfo->move(mapToParent(event->pos()) + QPoint(0, 40));
+        m_hooverInfo->resize(m_hooverInfo->sizeHint());
+        m_hooverInfo->raise();
     }
 }
 
@@ -546,7 +596,7 @@ void PreviewLabel::mouseReleaseEvent(QMouseEvent * event)
         return QLabel::mouseMoveEvent(event);
 
     if (m_dragging_left || m_dragging_top || m_dragging_right|| m_dragging_bottom) {
-
+        m_hooverInfo->hide();
         if (m_dragging_left)
             emit leftMarginChanged();
 
@@ -617,57 +667,83 @@ void PreviewLabel::mouseMoveEvent(QMouseEvent * event)
     QPoint p = event->pos();
     if (m_dragging_left) {
         m_left += limit(p.x() - m_startPos.x(), m_zoom);
-        event->accept();       
+        m_left = limitPositive(m_left);
+        event->accept();
+        m_hooverInfo->setText("Left " + QString::number(m_left));
         update();
     } else if (m_dragging_top) {
         m_top += limit(p.y() - m_startPos.y(), m_zoom);
+        m_top = limitPositive(m_top);
         event->accept();
+        m_hooverInfo->setText("Top " + QString::number(m_top));
         update();
     }  else if (m_dragging_right) {
         m_right += limit(m_startPos.x() - p.x(), m_zoom);
-        event->accept();        
+        m_right = limitPositive(m_right);
+        event->accept();
+        m_hooverInfo->setText("Right " + QString::number(m_right));
         update();
     } else if (m_dragging_bottom) {
         m_bottom += limit(m_startPos.y() - p.y(), m_zoom);
-        event->accept();        
+        m_bottom = limitPositive(m_bottom);
+        event->accept();
+        m_hooverInfo->setText("Bottom " + QString::number(m_bottom));
         update();
     } else if (rangeCheck(m_left * m_zoom, p.x())) {
         QApplication::setOverrideCursor(QCursor(Qt::SizeHorCursor));
         event->accept();
+        m_hooverInfo->setText("Left " + QString::number(m_left));
+        m_hooverInfo->show();
     } else if (rangeCheck(m_top * m_zoom, p.y())) {
         QApplication::setOverrideCursor(QCursor(Qt::SizeVerCursor));
         event->accept();
+        m_hooverInfo->setText("Top " + QString::number(m_top));
+        m_hooverInfo->show();
     } else if (rangeCheck(m_right * m_zoom, width() - p.x())) {
         QApplication::setOverrideCursor(QCursor(Qt::SizeHorCursor));
         event->accept();
+        m_hooverInfo->setText("Right " + QString::number(m_right));
+        m_hooverInfo->show();
     } else if (rangeCheck(m_bottom * m_zoom, height() - p.y())) {
         QApplication::setOverrideCursor(QCursor(Qt::SizeVerCursor));
         event->accept();
+        m_hooverInfo->setText("Bottom " + QString::number(m_bottom));
+        m_hooverInfo->show();
     } else {
         if (QApplication::overrideCursor())
             QApplication::restoreOverrideCursor();
         QLabel::mouseMoveEvent(event);
+        m_hooverInfo->hide();
     }
     m_startPos = p;
+    m_hooverInfo->move(mapToParent(p) + QPoint(0, 40));
+    m_hooverInfo->resize(m_hooverInfo->sizeHint());
+    m_hooverInfo->raise();
 }
 
 void PreviewLabel::leaveEvent(QEvent* event )
 {
     while (QApplication::overrideCursor())
         QApplication::restoreOverrideCursor();
+    m_hooverInfo->hide();
     QLabel::leaveEvent(event);
 }
 
 PreviewDialog::PreviewDialog(QWidget *parent) : DragWidget(parent)
 {
-    m_zoom = 1;
     m_borderImage = false;
     setAutoFillBackground(true);
 
     m_label = new PreviewLabel(this);
     m_slider = new QSlider(this);
 
-    QGridLayout *layout = new QGridLayout(this);
+    m_zoomLabel = new QLabel(this);
+
+    setZoom(1);
+
+    QVBoxLayout *layout = new QVBoxLayout(this);
+    QHBoxLayout *horizontalLayout = new QHBoxLayout();
+    QHBoxLayout *horizontalLayout2 = new QHBoxLayout();
     layout->setMargin(0);
     layout->setContentsMargins(2, 2, 2, 6);
     layout->setSpacing(4);
@@ -677,21 +753,32 @@ PreviewDialog::PreviewDialog(QWidget *parent) : DragWidget(parent)
     toolButton->setToolButtonStyle(Qt::ToolButtonIconOnly);
     toolButton->setFixedSize(icon.availableSizes().value(0) + QSize(4, 4));
     connect(toolButton, SIGNAL(clicked()), this, SLOT(onTogglePane()));
-    layout->addWidget(toolButton, 0, 0, 1, 1);        
 
     QScrollArea *scrollArea = new QScrollArea(this);
     WheelFilter *wheelFilter = new WheelFilter(scrollArea);
-    //scrollArea->installEventFilter(wheelFilter);
     scrollArea->setWidget(m_label);
     scrollArea->setFrameStyle(QFrame::NoFrame);
     m_slider->setOrientation(Qt::Horizontal);
-    m_slider->setMaximumWidth(120);
-    //layout->addItem(new QSpacerItem(10, 10), 0, 1, 1, 1);
-    layout->addWidget(m_slider, 0, 1, 1, 2);
-    layout->addWidget(scrollArea, 1, 1, 2, 2);
+    m_slider->setRange(1, 6);
+    m_slider->setFixedWidth(80);
+    m_zoomLabel->setFixedWidth(50);
+
+    horizontalLayout->addWidget(toolButton);
+    horizontalLayout->addSpacing(6);
+    horizontalLayout->addWidget(m_slider);
+    horizontalLayout->addSpacing(6);
+    horizontalLayout->addWidget(m_zoomLabel);
+    horizontalLayout->addStretch(1);
+
+    layout->addLayout(horizontalLayout);
+    horizontalLayout2->addSpacing(24);
+    horizontalLayout2->addWidget(scrollArea);
+    layout->addLayout(horizontalLayout2);
 
     wheelFilter->setTarget(this);
 
+    connect(m_slider, SIGNAL(valueChanged(int)), this, SLOT(onSliderMoved(int)));
+
     foreach (QWidget *childWidget, findChildren<QWidget*>()) {
         childWidget->installEventFilter(wheelFilter);
     }
diff --git a/src/plugins/qmldesigner/components/propertyeditor/contextpanewidgetimage.h b/src/plugins/qmldesigner/components/propertyeditor/contextpanewidgetimage.h
index b0bd4179e4e2209f6c5c999fa6599039f6d04d74..d5a266a152c995cd68d662cfa9ece14bb3d461a7 100644
--- a/src/plugins/qmldesigner/components/propertyeditor/contextpanewidgetimage.h
+++ b/src/plugins/qmldesigner/components/propertyeditor/contextpanewidgetimage.h
@@ -59,6 +59,7 @@ private:
     QPoint m_startPos;
     int m_zoom;
     bool m_borderImage;
+    QLabel *m_hooverInfo;
 };
 
 class PreviewDialog : public DragWidget