Shouldn't this also include `-mincoming-stack-boundary=2`? Not sure if MinGW already defaults to it though (incoming is for the stack alignment from "external" callers that GCC can't see, which is basically every caller of the Windows APIs, and they call it with 4-byte aligned stack).
-mpreferred-stack-boundary implies -mincoming-stack-boundary.