var screenToIso = function(screenX, screenY) { var isoX = screenY / tileH + screenX / (2*tileW) var isoY = screenY / tileH - screenX / (2*tileW) return [isoX, isoY]; } To get this function you need to rewrite the original math screenX = (isoX - isoY) * tileW screenY = (isoX + isoY) * tileH / 2 Starting with the first line you get the following: screenX = (isoX - isoY) * tileW screenX / tileW = isoX - isoY screenX / tileW + isoY = isoX The second line: screenY = (isoX + isoY) * tileH / 2 2*screenY = (isoX + isoY) * tileH 2*screenY / tileH = isoX + isoY 2*screenY / tileH - isoX = isoY Now the two lines look as follows: A) isoX = screenX / tileW + isoY B) isoY = 2*screenY / tileH - isoX Then substitute isoY in the line A, with the formula derived from line B: isoX = screenX / tileW + 2*screenY/tileH - isoX isoX+isoX = screenX / tileW + 2*screenY/tileH 2*isoX = screenX / tileW + 2*screenY/tileH isoX = screenX / (2*tileW) + screenY/tileH isoX = screenY/tileH + screenX / (2*tileW) And finally, substitute isoX in line B, with the formula derived from line A: isoY = 2*screenY / tileH - screenX / tileW - isoY 2*isoY = 2*screenY / tileH - screenX / tileW isoY = screenY / tileH - screenX / (2*tileW) Solving linear equations comes very much in handy for a lot of programming, especially graphics or game related programming. Pick up a book on [Algebra][1] or read some online tutorials, you will thank yourself later. [1]: http://en.wikipedia.org/wiki/Elementary_algebra