diff --git a/src/MessagesVC.mm b/src/MessagesVC.mm
index 4c67b894b0f633f8a864d4772ad15d25f73c05ba..b6cd85727e7e8ecd3b7098db3b5dde414d07e940 100644
--- a/src/MessagesVC.mm
+++ b/src/MessagesVC.mm
@@ -1010,6 +1010,7 @@ typedef NS_ENUM(NSInteger, MessageSequencing) {
     if (!previewImage || previewImage.length <= 0) {
         return;
     }
+    [self addToResponderChain];
     if ([QLPreviewPanel sharedPreviewPanelExists] && [[QLPreviewPanel sharedPreviewPanel] isVisible]) {
         [[QLPreviewPanel sharedPreviewPanel] orderOut:nil];
     } else {
@@ -1150,6 +1151,7 @@ typedef NS_ENUM(NSInteger, MessageSequencing) {
 
 - (void)endPreviewPanelControl:(QLPreviewPanel *)panel {
     panel.dataSource = nil;
+    [self removeFromResponderChain];
 }
 
 -(BOOL)acceptsPreviewPanelControl:(QLPreviewPanel *)panel
@@ -1162,6 +1164,9 @@ typedef NS_ENUM(NSInteger, MessageSequencing) {
 }
 
 - (id <QLPreviewItem>)previewPanel:(QLPreviewPanel *)panel previewItemAtIndex:(NSInteger)index {
+    if (previewImage == nil) {
+        return nil;
+    }
     try {
         return [NSURL fileURLWithPath: previewImage];
     } catch (NSException *exception) {
@@ -1169,4 +1174,21 @@ typedef NS_ENUM(NSInteger, MessageSequencing) {
     }
 }
 
+- (void)addToResponderChain {
+    if (conversationView.window &&
+        ![[conversationView.window nextResponder] isEqual:self]) {
+        NSResponder * aNextResponder = [conversationView.window nextResponder];
+        [conversationView.window setNextResponder:self];
+    }
+}
+
+
+- (void)removeFromResponderChain {
+    if (conversationView.window &&
+        [[conversationView.window nextResponder] isEqual:self]) {
+        NSResponder * aNextResponder = [conversationView.window nextResponder];
+        [conversationView.window setNextResponder:[self nextResponder]];
+    }
+}
+
 @end