diff --git a/src/contactmodel.cpp b/src/contactmodel.cpp
index dd2b33d10bda0fb3a486e0a497622ee3abdbe6b9..b73de18f01559608901c50e2e7c7b4027acfb733 100644
--- a/src/contactmodel.cpp
+++ b/src/contactmodel.cpp
@@ -1171,7 +1171,6 @@ ContactModelPimpl::slotProfileReceived(const QString& accountId,
     in.setCodec("UTF-8");
 
     auto vCard = in.readAll();
-    vCardFile.remove();
 
     profile::Info profileInfo;
     profileInfo.uri = peer;
@@ -1183,6 +1182,21 @@ ContactModelPimpl::slotProfileReceived(const QString& accountId,
         else if (e.contains("FN"))
             profileInfo.alias = e.split(":")[1];
 
+    if (peer == linked.owner.profileInfo.uri) {
+        if (linked.owner.profileInfo.avatar.isEmpty() && !profileInfo.avatar.isEmpty()) {
+            auto dest = storage::getPath() + accountId + "/profile.vcf";
+            QFile oldvCard(dest);
+            if (oldvCard.exists())
+                oldvCard.remove();
+            vCardFile.rename(dest);
+            linked.owner.accountModel->setAlias(linked.owner.id, profileInfo.alias);
+            linked.owner.accountModel->setAvatar(linked.owner.id, profileInfo.avatar);
+            emit linked.profileUpdated(peer);
+        }
+        return;
+    }
+    vCardFile.remove();
+
     contact::Info contactInfo;
     contactInfo.profileInfo = profileInfo;