diff --git a/share/qtcreator/gdbmacros/dumper.py b/share/qtcreator/gdbmacros/dumper.py
index 5c28e63cd1fed06344ca3321b789a16c84716908..25d5324729a542e8d45eb51a94834e7aac93889a 100644
--- a/share/qtcreator/gdbmacros/dumper.py
+++ b/share/qtcreator/gdbmacros/dumper.py
@@ -1054,7 +1054,7 @@ class Dumper:
             self.safePutItemHelper(item)
 
     def itemFormat(self, item):
-        format = self.formats.get(item.iname)
+        format = self.formats.get(str(cleanAddress(item.value.address)))
         if format is None:
             format = self.typeformats.get(stripClassTag(str(item.value.type)))
         return format
diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp
index b7169e780984057f4fecdf668746b1ab7ec1c091..5ada9817717520e1a6942d021acbe10fba6ae661 100644
--- a/src/plugins/debugger/watchhandler.cpp
+++ b/src/plugins/debugger/watchhandler.cpp
@@ -230,9 +230,9 @@ void WatchData::setType(const QString &str, bool guessChildrenFromType)
     }
 }
 
-void WatchData::setAddress(const QString &str)
+void WatchData::setAddress(const QByteArray &a)
 {
-    addr = str.toLatin1();
+    addr = a;
 }
 
 QString WatchData::toString() const
@@ -783,7 +783,7 @@ QVariant WatchModel::data(const QModelIndex &idx, int role) const
                         return QVariant(QLatin1Char('*') + item->parent->name);
                     return data.name;
                 case 1: {
-                    int format = m_handler->m_individualFormats.value(data.iname, -1);
+                    int format = m_handler->m_individualFormats.value(data.addr, -1);
                     if (format == -1)
                         format = m_handler->m_typeFormats.value(data.type, -1);
                     return truncateValue(formattedValue(data, format));
@@ -839,7 +839,7 @@ QVariant WatchModel::data(const QModelIndex &idx, int role) const
             return m_handler->m_typeFormats.value(data.type, -1);
 
         case IndividualFormatRole:
-            return m_handler->m_individualFormats.value(data.iname, -1);
+            return m_handler->m_individualFormats.value(data.addr, -1);
 
         case AddressRole: {
             if (!data.addr.isEmpty())
@@ -874,9 +874,9 @@ bool WatchModel::setData(const QModelIndex &index, const QVariant &value, int ro
     } else if (role == IndividualFormatRole) {
         const int format = value.toInt();
         if (format == -1) {
-            m_handler->m_individualFormats.remove(data.iname);
+            m_handler->m_individualFormats.remove(data.addr);
         } else {
-            m_handler->m_individualFormats[data.iname] = format;
+            m_handler->m_individualFormats[data.addr] = format;
         }
         m_handler->m_manager->updateWatchData(data);
     }
@@ -1620,10 +1620,10 @@ QByteArray WatchHandler::formatRequests() const
 
     ba.append("formats:");
     if (!m_individualFormats.isEmpty()) {
-        QHashIterator<QString, int> it(m_individualFormats);
+        QHashIterator<QByteArray, int> it(m_individualFormats);
         while (it.hasNext()) {
             it.next();
-            ba.append(it.key().toLatin1());
+            ba.append(it.key());
             ba.append('=');
             ba.append(QByteArray::number(it.value()));
             ba.append(',');
diff --git a/src/plugins/debugger/watchhandler.h b/src/plugins/debugger/watchhandler.h
index d6b26ef6bdf83cb9c0ad010609936d8c9343e2a1..37a6d174fabc02634a88423dde4b8f3a630917e6 100644
--- a/src/plugins/debugger/watchhandler.h
+++ b/src/plugins/debugger/watchhandler.h
@@ -79,7 +79,7 @@ public:
     void setType(const QString &, bool guessChildrenFromType = true);
     void setValueToolTip(const QString &);
     void setError(const QString &);
-    void setAddress(const QString &address);
+    void setAddress(const QByteArray &);
 
     bool isSomethingNeeded() const { return state & NeededMask; }
     void setAllNeeded() { state = NeededMask; }
@@ -289,7 +289,7 @@ private:
     QHash<QByteArray, int> m_watcherNames;
     QByteArray watcherName(const QByteArray &exp);
     QHash<QString, int> m_typeFormats;
-    QHash<QString, int> m_individualFormats;
+    QHash<QByteArray, int> m_individualFormats;
 
     // Items expanded in the Locals & Watchers view.
     QSet<QByteArray> m_expandedINames; 
diff --git a/src/plugins/debugger/watchwindow.cpp b/src/plugins/debugger/watchwindow.cpp
index 77c9f2bd9bb51a40f78d7d523b4e25e35ed45ce9..ab96204092d4bc1519b48f2f22d77a2c18375abd 100644
--- a/src/plugins/debugger/watchwindow.cpp
+++ b/src/plugins/debugger/watchwindow.cpp
@@ -202,14 +202,15 @@ void WatchWindow::dropEvent(QDropEvent *ev)
 
 void WatchWindow::contextMenuEvent(QContextMenuEvent *ev)
 {
-    QModelIndex idx = indexAt(ev->pos());
-    QModelIndex mi0 = idx.sibling(idx.row(), 0);
-    QModelIndex mi1 = idx.sibling(idx.row(), 1);
-    QModelIndex mi2 = idx.sibling(idx.row(), 2);
-    QString exp = model()->data(mi0, ExpressionRole).toString();
-    QString type = model()->data(mi2).toString();
-
-    QStringList alternativeFormats =
+    const QModelIndex idx = indexAt(ev->pos());
+    const QModelIndex mi0 = idx.sibling(idx.row(), 0);
+    const QModelIndex mi1 = idx.sibling(idx.row(), 1);
+    const QModelIndex mi2 = idx.sibling(idx.row(), 2);
+    const QString addr = model()->data(mi0, AddressRole).toString();
+    const QString exp = model()->data(mi0, ExpressionRole).toString();
+    const QString type = model()->data(mi2).toString();
+
+    const QStringList alternativeFormats =
         model()->data(mi0, TypeFormatListRole).toStringList();
     const int typeFormat =
         qMax(int(DecimalFormat), model()->data(mi0, TypeFormatRole).toInt());
@@ -224,8 +225,10 @@ void WatchWindow::contextMenuEvent(QContextMenuEvent *ev)
     QList<QAction *> individualFormatActions;
     QAction *clearIndividualFormatAction = 0;
     if (idx.isValid()) {
-        typeFormatMenu.setTitle(tr("Change Format for Type '%1'").arg(type));
-        individualFormatMenu.setTitle(tr("Change Format for Expression '%1'").arg(exp));
+        typeFormatMenu.setTitle(
+            tr("Change Format for Type '%1'").arg(type));
+        individualFormatMenu.setTitle(
+            tr("Change Format for Object at %1").arg(addr));
         if (alternativeFormats.isEmpty()) {
             typeFormatMenu.setEnabled(false);
             individualFormatMenu.setEnabled(false);
@@ -250,9 +253,9 @@ void WatchWindow::contextMenuEvent(QContextMenuEvent *ev)
             }
         }
     } else {
-        typeFormatMenu.setTitle(tr("Change format for type"));
+        typeFormatMenu.setTitle(tr("Change Format for Type"));
         typeFormatMenu.setEnabled(false);
-        individualFormatMenu.setTitle(tr("Change format for expression"));
+        individualFormatMenu.setTitle(tr("Change Format for Object"));
         individualFormatMenu.setEnabled(false);
     }