The door is view 600, which has two loops of one cel each. For its closed state, the hotspot is at [0,0], so right in the center bottom. When it's open, the hotspot is at [-8,3], right next to the bottom hinge. If global100 is set, the door in room 28 is instantiated at [289, 137], which fits perfectly into the picture. Otherwise, it's instantiated at [284, 131]... which is also exactly right:
(= door (View new:)) ; it's a local, don't ask me why.
(if global100
(door
view: 600 loop: 0 cel: 0
setPri: 9
posn: 289 137
ignoreActors: init: stopUpd:
)
(gEgo observeControl: ctlYELLOW) ;patch on the inside of the doorway
else
(door
view: 600 loop: 1 cel: 0
ignoreActors: true
setPri: 9
posn: 284 131
init: stopUpd:
)
)
The rest of Room28::init is to handle the day/night cycle and where Rosella should appear, and that's the only place the door object itself is touched (saying "door" doesn't count). I honestly can't find anything here that could cause the door to be misplaced like this.
For comparison, I checked out the 1988 version. The coordinates are a little different (open hotspot at [-8, 0], positioned at [289, 139] and [283, 139]) among various irrelevant changes but otherwise there's still nothing here that could cause the door to be misplaced.
If I take the door view from 1988 and use it in the 1989 version, set it to loop 1 (open) and place it at [284, 131]... it ends up too far up.
...But guess what happens when you place the 1989 door in the 1988 background, at the 1988 coordinate?
That's right. Positioning-wise, it matches robingravel's screenshot. But the trees indicate that's the 1989 version. Closed doesn't seem quite right either, but not as obviously as when it's open.