diff --git a/src/bitmessageqt/__init__.py b/src/bitmessageqt/__init__.py
index 0c00fba0..96db1f92 100644
--- a/src/bitmessageqt/__init__.py
+++ b/src/bitmessageqt/__init__.py
@@ -161,12 +161,15 @@ class MyForm(QtGui.QMainWindow):
             "MainWindow", "View HTML code as formatted text"), self.on_action_InboxMessageForceHtml)
         self.actionSaveMessageAs = self.ui.inboxContextMenuToolbar.addAction(_translate(
             "MainWindow", "Save message as..."), self.on_action_InboxSaveMessageAs)
+        self.actionMarkUnread = self.ui.inboxContextMenuToolbar.addAction(_translate(
+            "MainWindow", "Mark Unread"), self.on_action_InboxMarkUnread)
         self.ui.tableWidgetInbox.setContextMenuPolicy(
             QtCore.Qt.CustomContextMenu)
         self.connect(self.ui.tableWidgetInbox, QtCore.SIGNAL(
             'customContextMenuRequested(const QPoint&)'), self.on_context_menuInbox)
         self.popMenuInbox = QtGui.QMenu(self)
         self.popMenuInbox.addAction(self.actionForceHtml)
+        self.popMenuInbox.addAction(self.actionMarkUnread)
         self.popMenuInbox.addSeparator()
         self.popMenuInbox.addAction(self.actionReply)
         self.popMenuInbox.addAction(self.actionAddSenderToAddressBook)
@@ -2253,6 +2256,32 @@ class MyForm(QtGui.QMainWindow):
         content = content.replace('\n\n', '<br><br>')
         self.ui.textEditInboxMessage.setHtml(QtCore.QString(content))
 
+    def on_action_InboxMarkUnread(self):
+        font = QFont()
+        font.setBold(True)
+        for row in self.ui.tableWidgetInbox.selectedIndexes():
+            currentRow = row.row()
+            inventoryHashToMarkUnread = str(self.ui.tableWidgetInbox.item(
+                currentRow, 3).data(Qt.UserRole).toPyObject())
+            t = (inventoryHashToMarkUnread,)
+            shared.sqlLock.acquire()
+            shared.sqlSubmitQueue.put(
+                '''UPDATE inbox SET read=0 WHERE msgid=?''')
+            shared.sqlSubmitQueue.put(t)
+            shared.sqlReturnQueue.get()
+            shared.sqlLock.release()
+            self.ui.tableWidgetInbox.item(currentRow, 0).setFont(font)
+            self.ui.tableWidgetInbox.item(currentRow, 1).setFont(font)
+            self.ui.tableWidgetInbox.item(currentRow, 2).setFont(font)
+            self.ui.tableWidgetInbox.item(currentRow, 3).setFont(font)
+        shared.sqlLock.acquire()
+        shared.sqlSubmitQueue.put('commit')
+        shared.sqlLock.release()
+        # self.ui.tableWidgetInbox.selectRow(currentRow + 1) 
+        # This doesn't de-select the last message if you try to mark it unread, but that doesn't interfere. Might not be necessary.
+        # We could also select upwards, but then our problem would be with the topmost message.
+        # self.ui.tableWidgetInbox.clearSelection() manages to mark the message as read again.
+
     def on_action_InboxReply(self):
         currentInboxRow = self.ui.tableWidgetInbox.currentRow()
         toAddressAtCurrentInboxRow = str(self.ui.tableWidgetInbox.item(