Why does my MetaMask-connected dApp use the wrong account for transactions?

I’m building a dApp using MetaMask and ethers.js v6, but my connectToContract function consistently retrieves the wrong active signer address. MetaMask shows the correct account (0x629F260166655cFD9471F55c9BD97B59ea329F97), but getSigner().getAddress() returns a different address (0x494B66970dE582967BD39BfBC03E049849b59B15). I’ve ensured I’m calling eth_requestAccounts before connecting. How can I ensure my dApp uses the correct MetaMask account?