 				isSettingSourceFromImage = false
 			}
 
-			setNeedsUpdateContents()
+			lastAppliedTintColor = nil
+
+			setNeedsLayout()
 
 			if (image?.size ?? .zero) != (oldValue?.size ?? .zero) {
 				invalidateIntrinsicContentSize()

				return
			}

			if image != nil {
				setNeedsUpdateContents()
			}

			invalidateConfiguration()
		}

			activityIndicator.center = bounds.insetBy(padding).center
		}

		let imageLayerFrame = computeImageLayerFrame()
		imageLayer.bounds = CGRect(size: imageLayerFrame.size)
		imageLayer.position = imageLayerFrame.center

		if let image = image where image.renderingMode == .AlwaysTemplate {
			if tintColor != lastAppliedTintColor {
				lastAppliedTintColor = tintColor

				tintedImage = image.imageWithColor(tintColor)
			}
		}
		else {
			tintedImage = nil
		}

		if let contentImage = tintedImage ?? image {
			imageLayer.contents = contentImage.CGImage
			imageLayer.transform = CATransform3DMakeAffineTransform(computeImageLayerTransform())
		}
		else {
			imageLayer.contents = nil
			imageLayer.transform = CATransform3DIdentity
		}

		startOrUpdateSourceSession()
