diff --git a/src/plugins/debugger/debuggertooltip.cpp b/src/plugins/debugger/debuggertooltip.cpp
index da7511fbefd42b50494f820dd754c09e7f1dcafd..f51f6d07730fa43835e7582b7573f977270e0804 100644
--- a/src/plugins/debugger/debuggertooltip.cpp
+++ b/src/plugins/debugger/debuggertooltip.cpp
@@ -40,6 +40,8 @@
 #include <QtGui/QTreeView>
 #include <QtGui/QVBoxLayout>
 #include <QtGui/QWidget>
+#include <QtGui/QScrollBar>
+#include <QtGui/QDesktopWidget>
 
 
 namespace Debugger {
@@ -135,6 +137,34 @@ Q_SLOT void ToolTipWidget::computeSize()
         columns += sizeHintForColumn(i);
     }
     int rows = computeHeight(QModelIndex());
+
+    //Fit tooltip to screen, showing/hiding scrollbars as needed
+    //Add a bit of space to account for tooltip border, and not touch the border of the screen
+    QPoint pos(x(), y());
+    QRect desktopRect = QApplication::desktop()->availableGeometry(pos);
+    const int maxWidth = desktopRect.right() - pos.x() - 5 - 5;
+    const int maxHeight = desktopRect.bottom() - pos.y() - 5 - 5;
+
+    if (columns > maxWidth)
+        rows += horizontalScrollBar()->height();
+
+    if (rows > maxHeight) {
+        setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
+        rows = maxHeight;
+        columns += verticalScrollBar()->width();
+    }
+    else {
+        setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    }
+
+    if (columns > maxWidth) {
+        setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
+        columns = maxWidth;
+    }
+    else {
+        setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    }
+
     m_size = QSize(columns + 5, rows + 5);
     setMinimumSize(m_size);
     setMaximumSize(m_size);