   
   private func imagedDownloadComplete(image: UIImage) {
     url = nil
-    showImage(image)
     downloadTask = nil
+    fadeInImage(image)
+  }
+  
+  private func fadeInImage(image: UIImage) {
+    let downloadedImageView = UIImageView(image: image)
+    addSubview(downloadedImageView)
+    PagedImagesCellView.setupImageView(downloadedImageView, size: frame.size)
+    
+    downloadedImageView.alpha = 0
+    UIView.animateWithDuration(0.2, animations: {
+      downloadedImageView.alpha = 1
+      },
+      completion: { finished in
+        self.showImage(image)
+        downloadedImageView.removeFromSuperview()
+      }
+    )
   }
 }

    imageView.image = image
  }
  
  private func setupImageView() {
    addSubview(imageView)
    imageView.frame = CGRect(origin: CGPoint(), size: frame.size)
    imageView.contentMode = UIViewContentMode.ScaleAspectFit
  }
  
  // Called each time the cell is visible on screen when scrolling.

  override init(frame: CGRect) {
    super.init(frame: frame)
    
    PagedImagesCellView.setupImageView(imageView, size: frame.size)
    addSubview(imageView)
  }

  required init(coder aDecoder: NSCoder) {
