diff --git a/src/native/pixbufmanipulator.cpp b/src/native/pixbufmanipulator.cpp
index f1d9188db4555d2da59d0c9bceeaf6fa0333f4fb..588912881b0f988788f9e6a04e47aba964f0525c 100644
--- a/src/native/pixbufmanipulator.cpp
+++ b/src/native/pixbufmanipulator.cpp
@@ -213,7 +213,16 @@ PixbufManipulator::conversationPhoto(const lrc::api::conversation::Info& convers
             } else if (!contactPhoto.isEmpty()) {
                 QByteArray byteArray = contactPhoto.toUtf8();
                 QVariant photo = personPhoto(byteArray);
-                return QVariant::fromValue(scaleAndFrame(photo.value<std::shared_ptr<GdkPixbuf>>().get(), size, displayInformation, status, unreadMessages));
+                if (GDK_IS_PIXBUF(photo.value<std::shared_ptr<GdkPixbuf>>().get())) {
+                    return QVariant::fromValue(scaleAndFrame(
+                        photo.value<std::shared_ptr<GdkPixbuf>>().get(), size,
+                        displayInformation, status, unreadMessages));
+                } else {
+                    return QVariant::fromValue(scaleAndFrame(
+                        generateAvatar(bestName.toStdString(),
+                            "ring:" + contactInfo.profileInfo.uri.toStdString()).get(),
+                        size, displayInformation, status, unreadMessages));
+                }
             } else {
                 return QVariant::fromValue(scaleAndFrame(generateAvatar(bestName.toStdString(),
                      "ring:" + contactInfo.profileInfo.uri.toStdString()).get(), size, displayInformation, status, unreadMessages));