 
   // MARK: Animation
   func animateOverlayPercentage(percentage: CGFloat) {
-    upvoteOverlayImageView.alpha = max(min(percentage, 1), 0)
-    downvoteOverlayImageView.alpha = max(min(-percentage, 1), 0)
+    let upvoteAlpha = max(min(percentage, 1), 0)
+    let downvoteAlpha = max(min(-percentage, 1), 0)
+
+    if upvoteAlpha != upvoteOverlayImageView.alpha {
+      upvoteOverlayImageView.alpha = upvoteAlpha
+    }
+
+    if downvoteAlpha != downvoteOverlayImageView.alpha {
+      downvoteOverlayImageView.alpha = downvoteAlpha
+    }
   }
 }
 

    return label
  }

  private func createUpvoteOverlayImageView() -> UIImageView {
    let imageView = UIImageView(image: UIImage(asset: .UpvoteOverlay))
    imageView.contentMode = .ScaleAspectFit
    imageView.alpha = 0
    imageView.tintColor = UIColor(named: .Orange)
    return imageView
  }

  private func createDownvoteOverlayImageView() -> UIImageView {
    let imageView = UIImageView(image: UIImage(asset: .DownvoteOverlay))
    imageView.contentMode = .ScaleAspectFit
    imageView.alpha = 0
    imageView.tintColor = UIColor(named: .Purple)
    return imageView
  }

  private func createTitleLabel() -> UILabel {

  private lazy var topBar: UIVisualEffectView = self.createTopBar()
  private lazy var bottomBar: UIVisualEffectView = self.createBottomBar()
  private lazy var statsLabel: UILabel = self.createStatsLabel()
  private lazy var upvoteOverlayImageView: VoteOverlayView = self.createUpvoteOverlayView()
  private lazy var downvoteOverlayImageView: VoteOverlayView = self.createDownvoteOverlayView()

  var contentView: UIView? = nil {
    didSet {
