diff --git a/gajim/chat_control.py b/gajim/chat_control.py
index 71533a620759f9ac618701dd49986dfaa1bb6ec3..c0b01f2d69295f7bb79ba33f212380217407aac9 100644
--- a/gajim/chat_control.py
+++ b/gajim/chat_control.py
@@ -240,6 +240,9 @@ class ChatControl(ChatControlBase):
             self._nec_caps_received)
         app.ged.register_event_handler('stanza-message-outgoing', ged.OUT_POSTCORE,
             self._message_sent)
+        app.ged.register_event_handler(
+            'mam-decrypted-message-received',
+            ged.GUI1, self._nec_mam_decrypted_message_received)
 
         # PluginSystem: adding GUI extension point for this ChatControl
         # instance object
@@ -806,6 +809,20 @@ class ChatControl(ChatControlBase):
             app.plugin_manager.extension_point(
                 'encryption_dialog' + self.encryption, self)
 
+    def _nec_mam_decrypted_message_received(self, obj):
+        if obj.conn.name != self.account:
+            return
+        if obj.with_ != self.contact.jid:
+            return
+
+        kind = 'incoming'
+        if obj.kind == KindConstant.CHAT_MSG_SENT:
+            kind = 'outgoing'
+
+        self.print_conversation(obj.msgtxt, kind, tim=obj.timestamp,
+            encrypted=obj.encrypted, correct_id=obj.correct_id, 
+            msg_stanza_id=obj.message_id, additional_data=obj.additional_data)
+
     def _message_sent(self, obj):
         if obj.conn.name != self.account:
             return
diff --git a/gajim/common/connection_handlers_events.py b/gajim/common/connection_handlers_events.py
index 93a6b9844da0b3f6cd683daef616114b37369073..758303e332b7614e5faaa16f0a4ff88c5c1736c5 100644
--- a/gajim/common/connection_handlers_events.py
+++ b/gajim/common/connection_handlers_events.py
@@ -1052,6 +1052,7 @@ class MamMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
 
         # use stanza-id as unique-id
         self.unique_id, origin_id = self.get_unique_id()
+        self.message_id = self.msg_.getID()
 
         # Check for duplicates
         if app.logger.find_stanza_id(account,
@@ -1199,11 +1200,17 @@ class MamDecryptedMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
     base_network_events = []
 
     def generate(self):
+        self.correct_id = None
+
         if not self.msgtxt:
             # For example Chatstates, Receipts, Chatmarkers
             log.debug('Received MAM message without text')
             return
 
+        replace = self.msg_.getTag('replace', namespace=nbxmpp.NS_CORRECT)
+        if replace is not None:
+            self.correct_id = replace.getAttr('id')
+
         self.get_oob_data(self.msg_)
 
         if self.groupchat: