diff --git a/src/ConversationVC.mm b/src/ConversationVC.mm
index 64c68e2435f2c99cabe5c2d44e14f6e05c839c17..cce9ddd73381c0c7a3626118c5920ea804ea0856 100644
--- a/src/ConversationVC.mm
+++ b/src/ConversationVC.mm
@@ -231,11 +231,7 @@
     result.msgView.layer.cornerRadius = 5.0f;
 
     [result updateWidthConstraint:finalWidth];
-
-    Person* p = qvariant_cast<Person*>(qIdx.data((int)Person::Role::Object));
-    QVariant photo = GlobalInstances::pixmapManipulator().contactPhoto(p, QSize(50,50));
-    [result.photoView setImage:QtMac::toNSImage(qvariant_cast<QPixmap>(photo))];
-
+    [result.photoView setImage:QtMac::toNSImage(qvariant_cast<QPixmap>(qIdx.data(Qt::DecorationRole)))];
     return result;
 }
 
diff --git a/src/HistoryVC.mm b/src/HistoryVC.mm
index 40aa29051a6fcc4e5d953f4347f977b89f818f61..5fae480e180fa6c71d76e4a37e109d1a78657b73 100644
--- a/src/HistoryVC.mm
+++ b/src/HistoryVC.mm
@@ -176,8 +176,7 @@ NSInteger const PHOTO_TAG = 400;
         auto call = qvariant_cast<Call*>(qIdx.data((int)Call::Role::Object));
 
         NSImageView* photoView = [result viewWithTag:PHOTO_TAG];
-        QVariant photo = GlobalInstances::pixmapManipulator().callPhoto(call, QSize(50,50));
-        [photoView setImage:QtMac::toNSImage(qvariant_cast<QPixmap>(photo))];
+        [photoView setImage:QtMac::toNSImage(qvariant_cast<QPixmap>(qIdx.data(Qt::DecorationRole)))];
 
         NSTextField* details = [result viewWithTag:DETAILS_TAG];
         [details setStringValue:qIdx.data((int)Call::Role::FormattedDate).toString().toNSString()];
diff --git a/src/PersonsVC.mm b/src/PersonsVC.mm
index db5aa2cb021a07437bf285e441efd31b8fc56a61..07bc3f0c144a0b97031b414f3854fca8e1a77c83 100644
--- a/src/PersonsVC.mm
+++ b/src/PersonsVC.mm
@@ -176,8 +176,8 @@ NSInteger const CALL_BUTTON_TAG = 400;
         NSImageView* photoView = [result viewWithTag:IMAGE_TAG];
         Person* p = qvariant_cast<Person*>(qIdx.data((int)Person::Role::Object));
 
-        QVariant photo = GlobalInstances::pixmapManipulator().contactPhoto(p, QSize(40,40));
-        [photoView setImage:QtMac::toNSImage(qvariant_cast<QPixmap>(photo))];
+        [photoView setImage:QtMac::toNSImage(qvariant_cast<QPixmap>(qIdx.data(Qt::DecorationRole)))];
+
         [((ContextualTableCellView*) result) setContextualsControls:[NSMutableArray arrayWithObject:[result viewWithTag:CALL_BUTTON_TAG]]];
 
         NSTextField* details = [result viewWithTag:DETAILS_TAG];
diff --git a/src/SmartViewVC.mm b/src/SmartViewVC.mm
index f445f52f06c9ab15b95c9e82c13ed0fa8759fefb..10c8db5ed54d2d0b09ede8e3f3e3dbf1f15ba48c 100644
--- a/src/SmartViewVC.mm
+++ b/src/SmartViewVC.mm
@@ -241,9 +241,8 @@ NSInteger const CANCEL_BUTTON_TAG   = 600;
     NSTextField* displayName = [result viewWithTag:DISPLAYNAME_TAG];
     [displayName setStringValue:qIdx.data((int)Ring::Role::Name).toString().toNSString()];
     NSImageView* photoView = [result viewWithTag:IMAGE_TAG];
-    Person* p = qvariant_cast<Person*>(qIdx.data((int)Person::Role::Object));
-    QVariant photo = GlobalInstances::pixmapManipulator().contactPhoto(p, QSize(50,50));
-    [photoView setImage:QtMac::toNSImage(qvariant_cast<QPixmap>(photo))];
+
+    [photoView setImage:QtMac::toNSImage(qvariant_cast<QPixmap>(qIdx.data(Qt::DecorationRole)))];
     return result;
 }
 
diff --git a/src/delegates/ImageManipulationDelegate.h b/src/delegates/ImageManipulationDelegate.h
index 776df95df69bf2ab955ecb0c918d2f428514ae0e..43e7446e50a588b8b29d878fc35db3a7d638e034 100644
--- a/src/delegates/ImageManipulationDelegate.h
+++ b/src/delegates/ImageManipulationDelegate.h
@@ -19,6 +19,10 @@
 
 #import <QuartzCore/QuartzCore.h>
 
+//Qt
+#import <QSize>
+
+//Ring
 #import <interfaces/pixmapmanipulatori.h>
 #import <call.h>
 
@@ -50,16 +54,19 @@ namespace Interfaces {
         QVariant   decorationRole(const Call* c) override;
         QVariant   decorationRole(const ContactMethod* cm) override;
         QVariant   decorationRole(const Person* p) override;
+        QVariant   decorationRole(const Account* acc) override;
 
     private:
         //Helper
-        QPixmap drawDefaultUserPixmap(const QSize& size, bool displayPresence, bool isPresent);
+        QPixmap drawDefaultUserPixmap(const QSize& size, bool displayPresence = false, bool isPresent = false);
         CGImageRef resizeCGImage(CGImageRef image, const QSize& size);
 
         /**
          * Return a version of size destSize centered of the bigger photo
          */
         QPixmap crop(QPixmap& photo, const QSize& destSize);
+
+        const QSize decorationSize = {80,80};
     };
 
 } // namespace Interfaces
diff --git a/src/delegates/ImageManipulationDelegate.mm b/src/delegates/ImageManipulationDelegate.mm
index 0862f20c063b17732e61cfe2973d3f6e2fe8aa09..c21f8e4e1090fdfedbd7dc19bb8ea1d173f1429e 100644
--- a/src/delegates/ImageManipulationDelegate.mm
+++ b/src/delegates/ImageManipulationDelegate.mm
@@ -34,6 +34,8 @@
 
 //Ring
 #import <person.h>
+#import <profilemodel.h>
+#import <profile.h>
 #import <contactmethod.h>
 
 namespace Interfaces {
@@ -84,7 +86,7 @@ namespace Interfaces {
             painter.drawRoundedRect(0,0,pxm.height(),pxm.height(),radius,radius);
         }
         else {
-            pxm = drawDefaultUserPixmap(size, false, false);
+            pxm = drawDefaultUserPixmap(size);
         }
 
         return pxm;
@@ -130,7 +132,7 @@ namespace Interfaces {
         if (n->contact()) {
             return contactPhoto(n->contact(), size, displayPresence);
         } else {
-            return drawDefaultUserPixmap(size, false, false);
+            return drawDefaultUserPixmap(size);
         }
     }
 
@@ -139,8 +141,10 @@ namespace Interfaces {
         QImage image;
         //For now, ENCODING is only base64 and image type PNG or JPG
         const bool ret = image.loadFromData(QByteArray::fromBase64(data),type.toLatin1());
-        if (!ret)
+        if (!ret) {
             qDebug() << "vCard image loading failed";
+            return drawDefaultUserPixmap(decorationSize);
+        }
 
         return QPixmap::fromImage(image);
     }
@@ -248,20 +252,33 @@ namespace Interfaces {
 
     QVariant ImageManipulationDelegate::decorationRole(const Call* c)
     {
-        Q_UNUSED(c)
-        return QVariant();
+        if (c && c->peerContactMethod()
+            && c->peerContactMethod()->contact()) {
+               return contactPhoto(c->peerContactMethod()->contact(), decorationSize);
+        } else
+            return drawDefaultUserPixmap(decorationSize);
     }
 
     QVariant ImageManipulationDelegate::decorationRole(const ContactMethod* cm)
     {
-        Q_UNUSED(cm)
-        return QVariant();
+        QImage photo;
+        if (cm && cm->contact() && cm->contact()->photo().isValid())
+            return contactPhoto(cm->contact(), decorationSize);
+        else
+            return drawDefaultUserPixmap(decorationSize);
     }
 
     QVariant ImageManipulationDelegate::decorationRole(const Person* p)
     {
-        Q_UNUSED(p)
-        return QVariant();
+        return contactPhoto(const_cast<Person*>(p), decorationSize);
+    }
+
+    QVariant ImageManipulationDelegate::decorationRole(const Account* acc)
+    {
+        Q_UNUSED(acc)
+        if (auto pro = ProfileModel::instance().selectedProfile())
+            return contactPhoto(pro->person(), decorationSize);
+        return drawDefaultUserPixmap(decorationSize);
     }
 
 } // namespace Interfaces