 		swizzled_didMoveToWindow()
 
 		delegateViewController?.viewDidMoveToWindow()
+	}
+
+
+	@nonobjc
+	public var untransformedFrame: CGRect {
+		get {
+			let size = bounds.size
+			let anchorPoint = layer.anchorPoint
+			let centerOffset = CGPoint(left: (0.5 - anchorPoint.left) * size.width, top: (0.5 - anchorPoint.top) * size.height)
+
+			return CGRect(size: size).centeredAt(center.offsetBy(centerOffset))
+		}
+		set {
+			let anchorPoint = layer.anchorPoint
+			let centerOffset = CGPoint(left: (0.5 - anchorPoint.left) * -newValue.width, top: (0.5 - anchorPoint.top) * -newValue.height)
+
+			bounds = CGRect(origin: bounds.origin, size: newValue.size)
+			center = newValue.center.offsetBy(centerOffset)
+		}
 	}
 
 

	@nonobjc
	public var participatesInHitTesting: Bool {
		return (!hidden && userInteractionEnabled && alpha >= 0.01)
	}





	@nonobjc
	@warn_unused_result
	public func frameWhenApplyingTransform(transform: CGAffineTransform) -> CGRect {
		return untransformedFrame.transform(transform, anchorPoint: layer.anchorPoint)
	}


	@nonobjc
	public final var gridScaleFactor: CGFloat {
		return max(contentScaleFactor, (window?.screen.scale ?? UIScreen.mainScreen().scale))
	}
