diff --git a/engines/scumm/script.cpp b/engines/scumm/script.cpp
index d8c4948..605d831 100644
--- a/engines/scumm/script.cpp
+++ b/engines/scumm/script.cpp
@@ -1363,12 +1363,40 @@ void ScummEngine::runInputScript(int clickArea, int val, int mode) {
 				args[1] = VAR(82 + (val - 100));
 			}
 		}
+	}
 
-		// Clicks are handled differently in Indy3 mac: param 2 of the
-		// input script is set to 0 for normal clicks, and to 1 for double clicks.
+	// Double clicks are handled differently in Mac Indy3 and Loom
+	if (_game.platform == Common::kPlatformMacintosh && (_game.id == GID_INDY3 || _game.id == GID_LOOM)) {
 		uint32 time = _system->getMillis();
-		args[2] = (time < _lastInputScriptTime + 500);	// 500 ms double click delay
+		bool doubleClick = false;
+
+		// The DOS EGA version of Loom checks not only the time between
+		// the clicks, but also that the mouse position hasn't changed
+		// to much. That seems like a good idea to use here as well.
+		//
+		// We use a 500 ms as the double click delay, though at least
+		// DOS EGA Loom uses timer variables instead.
+		doubleClick = (time < _lastInputScriptTime + 500) &&
+			(ABS(_lastInputScriptClickX - VAR(VAR_VIRT_MOUSE_X)) < 6) &&
+			(ABS(_lastInputScriptClickY - VAR(VAR_VIRT_MOUSE_Y)) < 3);
+		
+		if (_game.id == GID_INDY3) {
+			// param 2 of the input script is set to 0 for normal
+			// clicks, and to 1 for double clicks.
+			args[2] = doubleClick;
+		} else if (_game.id == GID_LOOM) {
+			// DOS EGA Loom uses variables 50 and upwards to store
+			// information about drafts. The Mac version uses
+			// variables 55 and upwards. Variable 52 appears to be
+			// the flag indicating double click. It's currently
+			// unknown what the other extra variables are, or if
+			// they are even used.
+			VAR(52) = doubleClick;
+		}
+
 		_lastInputScriptTime = time;
+		_lastInputScriptClickX = VAR(VAR_VIRT_MOUSE_X);
+		_lastInputScriptClickY = VAR(VAR_VIRT_MOUSE_Y);
 	}
 
 	if (verbScript)
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index 6a4fe23..2bbf743 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -200,6 +200,8 @@ ScummEngine::ScummEngine(OSystem *syst, const DetectorResult &dr)
 	_leftBtnPressed = 0;
 	_rightBtnPressed = 0;
 	_lastInputScriptTime = 0;
+	_lastInputScriptClickX = 0;
+	_lastInputScriptClickY = 0;
 	_bootParam = 0;
 	_dumpScripts = false;
 	_debugMode = 0;
diff --git a/engines/scumm/scumm.h b/engines/scumm/scumm.h
index a77c1c0..6403c56 100644
--- a/engines/scumm/scumm.h
+++ b/engines/scumm/scumm.h
@@ -574,9 +574,11 @@ protected:
 
 	/**
 	 * Last time runInputScript was run (measured in terms of OSystem::getMillis()).
-	 * This is currently only used for Indy3 mac to detect "double clicks".
+	 * This is currently only used for Mac Indy3 and Loom to detect "double clicks".
 	 */
 	uint32 _lastInputScriptTime;
+	int _lastInputScriptClickX;
+	int _lastInputScriptClickY;
 
 	/** The bootparam, to be passed to the script 1, the bootscript. */
 	int _bootParam;
