diff --git a/engines/sci/engine/kgraphics32.cpp b/engines/sci/engine/kgraphics32.cpp
index cd735d1..49678ae 100644
--- a/engines/sci/engine/kgraphics32.cpp
+++ b/engines/sci/engine/kgraphics32.cpp
@@ -142,7 +142,21 @@ reg_t kIsOnMe(EngineState *s, int argc, reg_t *argv) {
 	uint16 y = argv[1].toUint16();
 	reg_t targetObject = argv[2];
 	uint16 illegalBits = argv[3].getOffset();
-	Common::Rect nsRect = g_sci->_gfxCompare->getNSRect(targetObject, true);
+	Common::Rect nsRect = g_sci->_gfxCompare->getNSRect(targetObject, false);
+
+	// Use these ancient fixes (from commits
+	// ab558b45d252743797bca27d2240bf0e2057863f and
+	// f403d0f806d56dbe2017374792e0697e6d46bc1f) instead of what is
+	// built in getNSRect.  Hopefully that will make GK1 work again.
+	uint16 itemX = readSelectorValue(s->_segMan, targetObject, SELECTOR(x));
+	uint16 itemY = readSelectorValue(s->_segMan, targetObject, SELECTOR(y));
+	// If top and left are negative, we need to adjust coordinates by the item's x and y
+	if (nsRect.left < 0)
+		nsRect.translate(itemX, 0);
+	if (nsRect.top < 0)
+		nsRect.translate(0, itemY);
+	// End of resurrected GK1 fixes.
+
 
 	// we assume that x, y are local coordinates
 
