diff --git a/Telegram/SourceFiles/ui/image/image.h b/Telegram/SourceFiles/ui/image/image.h
index ce770c36a..6dff6f1fc 100644
--- a/Telegram/SourceFiles/ui/image/image.h
+++ b/Telegram/SourceFiles/ui/image/image.h
@@ -45,6 +45,13 @@ ImagePtr Create(const GeoPointLocation &location);
 
 class Source {
 public:
+	Source() = default;
+	Source(const Source &other) = delete;
+	Source(Source &&other) = delete;
+	Source &operator=(const Source &other) = delete;
+	Source &operator=(Source &&other) = delete;
+	virtual ~Source() = default;
+
 	virtual void load(
 		Data::FileOrigin origin,
 		bool loadFirst,
@@ -83,8 +90,6 @@ public:
 
 	virtual QByteArray bytesForCache() = 0;
 
-	virtual ~Source() = default;
-
 };
 
 } // namespace Images
diff --git a/Telegram/SourceFiles/ui/image/image_source.cpp b/Telegram/SourceFiles/ui/image/image_source.cpp
index d38f63caa..e7075d613 100644
--- a/Telegram/SourceFiles/ui/image/image_source.cpp
+++ b/Telegram/SourceFiles/ui/image/image_source.cpp
@@ -325,6 +325,8 @@ void RemoteSource::loadLocal() {
 void RemoteSource::setImageBytes(const QByteArray &bytes) {
 	if (bytes.isEmpty()) {
 		return;
+	} else if (loaderValid()) {
+		unload();
 	}
 	_loader = createLoader({}, LoadFromLocalOnly, true);
 	_loader->finishWithBytes(bytes);