This is correct. The reason is that because the votes weight is calculated at the proposal snapshot, a user can programatically cast a vote exactly when snapshot == currentTimepoint and then transfer the tokens to a different account. Since snapshot == currentTimepoint, the new token holder can still cast a vote, effectively doubling those tokens voting power.
Taking your example, if voting starts exactly at block number 3, then the voting weight is that of block number 2, meaning that the account can no longer transfer its votes.