diff --git a/Telegram/SourceFiles/calls/calls_panel.cpp b/Telegram/SourceFiles/calls/calls_panel.cpp
index 9e6513793..3fd4c4680 100644
--- a/Telegram/SourceFiles/calls/calls_panel.cpp
+++ b/Telegram/SourceFiles/calls/calls_panel.cpp
@@ -523,13 +523,13 @@ void Panel::refreshUserPhoto() {
 	if (isGoodUserPhoto(photo) && isNewPhoto(photo)) {
 		_userPhotoId = photo->id;
 		_userPhotoFull = true;
-		createUserpicCache(photo->full);
+		createUserpicCache(photo->full, _user->userpicPhotoOrigin());
 	} else if (_userPhoto.isNull()) {
-		createUserpicCache(_user->currentUserpic());
+		createUserpicCache(_user->currentUserpic(), _user->userpicOrigin());
 	}
 }
 
-void Panel::createUserpicCache(ImagePtr image) {
+void Panel::createUserpicCache(ImagePtr image, Data::FileOrigin origin) {
 	auto size = st::callWidth * cIntRetinaFactor();
 	auto options = _useTransparency ? (Images::Option::RoundedLarge | Images::Option::RoundedTopLeft | Images::Option::RoundedTopRight | Images::Option::Smooth) : Images::Option::None;
 	if (image) {
@@ -543,7 +543,7 @@ void Panel::createUserpicCache(ImagePtr image) {
 			width = size;
 		}
 		_userPhoto = image->pixNoCache(
-			_user->userpicPhotoOrigin(),
+			origin,
 			width,
 			height,
 			options,
diff --git a/Telegram/SourceFiles/calls/calls_panel.h b/Telegram/SourceFiles/calls/calls_panel.h
index df00ac55a..16b776dd6 100644
--- a/Telegram/SourceFiles/calls/calls_panel.h
+++ b/Telegram/SourceFiles/calls/calls_panel.h
@@ -92,7 +92,7 @@ private:
 	void processUserPhoto();
 	void refreshUserPhoto();
 	bool isGoodUserPhoto(PhotoData *photo);
-	void createUserpicCache(ImagePtr image);
+	void createUserpicCache(ImagePtr image, Data::FileOrigin origin);
 	QRect signalBarsRect() const;
 	void paintSignalBarsBg(Painter &p);
 
diff --git a/Telegram/SourceFiles/data/data_peer.cpp b/Telegram/SourceFiles/data/data_peer.cpp
index 3f91ca743..1f617a6b3 100644
--- a/Telegram/SourceFiles/data/data_peer.cpp
+++ b/Telegram/SourceFiles/data/data_peer.cpp
@@ -187,7 +187,7 @@ void PeerData::setUserpicPhoto(const MTPPhoto &data) {
 
 ImagePtr PeerData::currentUserpic() const {
 	if (_userpic) {
-		_userpic->load(userpicPhotoOrigin());
+		_userpic->load(userpicOrigin());
 		if (_userpic->loaded()) {
 			if (!useEmptyUserpic()) {
 				_userpicEmpty = nullptr;
@@ -203,7 +203,7 @@ ImagePtr PeerData::currentUserpic() const {
 
 void PeerData::paintUserpic(Painter &p, int x, int y, int size) const {
 	if (auto userpic = currentUserpic()) {
-		p.drawPixmap(x, y, userpic->pixCircled(userpicPhotoOrigin(), size, size));
+		p.drawPixmap(x, y, userpic->pixCircled(userpicOrigin(), size, size));
 	} else {
 		_userpicEmpty->paint(p, x, y, x + size + x, size);
 	}
@@ -211,7 +211,7 @@ void PeerData::paintUserpic(Painter &p, int x, int y, int size) const {
 
 void PeerData::paintUserpicRounded(Painter &p, int x, int y, int size) const {
 	if (auto userpic = currentUserpic()) {
-		p.drawPixmap(x, y, userpic->pixRounded(userpicPhotoOrigin(), size, size, ImageRoundRadius::Small));
+		p.drawPixmap(x, y, userpic->pixRounded(userpicOrigin(), size, size, ImageRoundRadius::Small));
 	} else {
 		_userpicEmpty->paintRounded(p, x, y, x + size + x, size);
 	}
@@ -219,14 +219,14 @@ void PeerData::paintUserpicRounded(Painter &p, int x, int y, int size) const {
 
 void PeerData::paintUserpicSquare(Painter &p, int x, int y, int size) const {
 	if (auto userpic = currentUserpic()) {
-		p.drawPixmap(x, y, userpic->pix(userpicPhotoOrigin(), size, size));
+		p.drawPixmap(x, y, userpic->pix(userpicOrigin(), size, size));
 	} else {
 		_userpicEmpty->paintSquare(p, x, y, x + size + x, size);
 	}
 }
 
 void PeerData::loadUserpic(bool loadFirst, bool prior) {
-	_userpic->load(userpicPhotoOrigin(), loadFirst, prior);
+	_userpic->load(userpicOrigin(), loadFirst, prior);
 }
 
 bool PeerData::userpicLoaded() const {
@@ -256,7 +256,7 @@ void PeerData::saveUserpicRounded(const QString &path, int size) const {
 
 QPixmap PeerData::genUserpic(int size) const {
 	if (auto userpic = currentUserpic()) {
-		return userpic->pixCircled(userpicPhotoOrigin(), size, size);
+		return userpic->pixCircled(userpicOrigin(), size, size);
 	}
 	auto result = QImage(QSize(size, size) * cIntRetinaFactor(), QImage::Format_ARGB32_Premultiplied);
 	result.setDevicePixelRatio(cRetinaFactor());
@@ -270,7 +270,7 @@ QPixmap PeerData::genUserpic(int size) const {
 
 QPixmap PeerData::genUserpicRounded(int size) const {
 	if (auto userpic = currentUserpic()) {
-		return userpic->pixRounded(userpicPhotoOrigin(), size, size, ImageRoundRadius::Small);
+		return userpic->pixRounded(userpicOrigin(), size, size, ImageRoundRadius::Small);
 	}
 	auto result = QImage(QSize(size, size) * cIntRetinaFactor(), QImage::Format_ARGB32_Premultiplied);
 	result.setDevicePixelRatio(cRetinaFactor());
diff --git a/Telegram/SourceFiles/data/data_peer.h b/Telegram/SourceFiles/data/data_peer.h
index 58c7f2dc3..306bf089d 100644
--- a/Telegram/SourceFiles/data/data_peer.h
+++ b/Telegram/SourceFiles/data/data_peer.h
@@ -183,10 +183,13 @@ public:
 	PhotoId userpicPhotoId() const {
 		return userpicPhotoUnknown() ? 0 : _userpicPhotoId;
 	}
+	Data::FileOrigin userpicOrigin() const {
+		return Data::FileOrigin(Data::FileOriginPeerPhoto(id));
+	}
 	Data::FileOrigin userpicPhotoOrigin() const {
 		return (isUser() && userpicPhotoId())
 			? Data::FileOriginUserPhoto(bareId(), userpicPhotoId())
-			: Data::FileOrigin(Data::FileOriginPeerPhoto(id));
+			: Data::FileOrigin();
 	}
 
 	int nameVersion = 1;