   injectImage: ->
     @$placeholder.add(@$artwork).attr('src', @$img.attr 'src')
     # Position exactly where original image was
-    @$artwork.css @$img[0].getBoundingClientRect()
+    @$artwork.css @getRect(@$img)
+
+  getRect: ($el) ->
+    _.pick($el[0].getBoundingClientRect(), 'height', 'width', 'top', 'right', 'bottom', 'left')
 
   transitionIn: ->
     @$el.attr 'data-state', 'in'
     @$img.css visibility: 'hidden'
     @$artwork.
-      css(@$placeholder[0].getBoundingClientRect()).
+      css(@getRect(@$placeholder)).
       one($.support.transition.end, =>
         @$artwork.addClass('is-notransition')
       ).emulateTransitionEnd(750)

    @$el.attr 'data-state', 'out'
    @$artwork.
      removeClass('is-notransition').
      css @$img[0].getBoundingClientRect()

  scalePlaceholder: ->
    @$placeholder.css

    @$room.css transform: "scale(#{@roomScalingFactor()})"

  scaleArtwork: ->
    @$artwork.css @getRect(@$placeholder)

  # Called on the throttled window resize event
  scale: =>
