 // MARK: Lazy Property Creation
 private extension ZoomView {
     func _createScrollView() -> UIScrollView {
+        let contentView: UIView = self._contentView
         let scrollView: UIScrollView = UIScrollView(frame: self.bounds)
-        scrollView.contentSize = self.bounds.size
         scrollView.clipsToBounds = false
         scrollView.delegate = self
-        scrollView.addSubview(self._contentView)
+        scrollView.addSubview(contentView)
+        scrollView.contentSize = contentView.size
         return scrollView
     }
 }

// MARK: Update Zoom Scales
private extension ZoomView {
    func _updateZoomScales() {
        let contentView: UIView = self._contentView
        let scrollView: UIScrollView = self._scrollView
        
        let widthRatio: CGFloat = scrollView.width / contentView.width
        let heightRatio: CGFloat = scrollView.height / contentView.height

}


// MARK: ContentView Size Change Handling
private extension ZoomView {
    func _contentViewSizeChanged() {
        let scrollView: UIScrollView = self._scrollView
        let contentViewSize: CGSize = self._contentView.size
        
        guard scrollView.contentSize != contentViewSize else {
            return
        }
        
        scrollView.contentSize = contentViewSize
        self._updateZoomScales()
        self._adjustContentPosition()
    }
}


// MARK: Update Content Position
private extension ZoomView {
    func _adjustContentPosition() {
