Index: /trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.cpp	(revision 88464)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpBrowserWidget.cpp	(revision 88465)
@@ -378,4 +378,5 @@
     pMainLayout->addWidget(m_pValueLabel, Qt::AlignCenter);
     pMainLayout->addWidget(m_pPlusButton);
+    setZoomPercentage(100);
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpViewer.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpViewer.cpp	(revision 88464)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/helpbrowser/UIHelpViewer.cpp	(revision 88465)
@@ -425,5 +425,6 @@
     if (!fVisible)
     {
-        document()->undo();
+        /* Clear highlights: */
+        setExtraSelections(QList<QTextEdit::ExtraSelection>());
         m_pFindInPageWidget->clearSearchField();
         verticalScrollBar()->setValue(iPosition);
@@ -529,5 +530,4 @@
             this, &UIHelpViewer::sltHandleCopyLink);
 
-
     QAction *pFindInPage = new QAction(UIHelpBrowserWidget::tr("Find in Page"));
     pFindInPage->setCheckable(true);
@@ -582,4 +582,5 @@
 void UIHelpViewer::mouseReleaseEvent(QMouseEvent *pEvent)
 {
+    bool fOverlayMode = m_fOverlayMode;
     clearOverlay();
 
@@ -597,12 +598,11 @@
     QIWithRetranslateUI<QTextBrowser>::mouseReleaseEvent(pEvent);
 
-    loadImageAtPosition(pEvent->globalPos());
+    if (!fOverlayMode)
+        loadImageAtPosition(pEvent->globalPos());
 }
 
 void UIHelpViewer::mousePressEvent(QMouseEvent *pEvent)
 {
-    clearOverlay();
     QIWithRetranslateUI<QTextBrowser>::mousePressEvent(pEvent);
-    loadImageAtPosition(pEvent->globalPos());
 }
 
@@ -730,22 +730,21 @@
     QTextDocument* pDocument = document();
     AssertReturnVoid(pDocument);
-    /* Clear previous highlight: */
-    pDocument->undo();
-
-    QTextCursor highlightCursor(pDocument);
-    QTextCursor cursor(pDocument);
-    cursor.beginEditBlock();
+
+    QList<QTextEdit::ExtraSelection> extraSelections;
+
     for (int i = 0; i < m_matchedCursorPosition.size(); ++i)
     {
-        highlightCursor.setPosition(m_matchedCursorPosition[i]);
-
-        QTextCharFormat colorFormat(highlightCursor.charFormat());
-        colorFormat.setBackground(Qt::yellow);
-
-        highlightCursor.setPosition(m_matchedCursorPosition[i] + iSearchTermLength, QTextCursor::KeepAnchor);
-        if (!highlightCursor.isNull())
-            highlightCursor.setCharFormat(colorFormat);
-    }
-    cursor.endEditBlock();
+        QTextEdit::ExtraSelection selection;
+        QTextCursor cursor = textCursor();
+        cursor.setPosition(m_matchedCursorPosition[i]);
+        cursor.setPosition(m_matchedCursorPosition[i] + iSearchTermLength, QTextCursor::KeepAnchor);
+        QTextCharFormat format = cursor.charFormat();
+        format.setBackground(Qt::yellow);
+
+        selection.cursor = cursor;
+        selection.format = format;
+        extraSelections.append(selection);
+    }
+    setExtraSelections(extraSelections);
 }
 
@@ -847,8 +846,8 @@
         {
             DocumentImage image;
-           QTextImageFormat imageFormat = cursor.charFormat().toImageFormat();
-           image.m_fInitialWidth = imageFormat.width();
-           image.m_iPosition = cursor.position();
-           m_imageMap[imageFormat.name()] = image;
+            QTextImageFormat imageFormat = cursor.charFormat().toImageFormat();
+            image.m_fInitialWidth = imageFormat.width();
+            image.m_iPosition = cursor.position();
+            m_imageMap[imageFormat.name()] = image;
         }
     }
@@ -869,5 +868,5 @@
         QTextCursor cursor = textCursor();
         cursor.movePosition(QTextCursor::Start);
-        cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::MoveAnchor, (*iterator).m_iPosition - 1);
+        cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::MoveAnchor, (*iterator).m_iPosition);
         if (cursor.isNull())
             continue;
@@ -877,5 +876,5 @@
         QTextImageFormat imageFormat = format.toImageFormat();
         imageFormat.setWidth((*iterator).m_fInitialWidth * m_iZoomPercentage / 100.);
-        cursor.deleteChar();
+        cursor.deletePreviousChar();
         cursor.insertImage(imageFormat);
     }
