Was a noob mistake. The coordinates used by GLFW for cursor positioning are display pixels, whereas mc renders to a multiple. What worked was:
double s = mc.getMainWindow().getGuiScaleFactor();
mc.currentScreen.mouseClicked(x/s, y/s, 0); // 0 is code for left button
MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.MouseClickedEvent.Pre(mc.currentScreen, x/s, y/s, 0)); // share event with any mouse handlers (optional)
Hope this helps anyone doing something similar