What I propose is this…
We should have a dual vote general election. In the first round of voting, you vote for who you want to form the government. This will have no effect on who represents you locally.
In the second round of voting, you vote for MPs to represent your constituencies.
In both rounds you indicate your first and second preference. If the winning party (of the first round governmental vote and of each individual second round constituency vote) doesn’t get at least, say, 60% of the vote, they have to form a coalition. Who they align with is decided by second preferences. This will reduce the likelihood that your chosen party will align with a party you are strongly opposed to.
The dual vote system does allow for the possibility that the distribution of first round (governmental) votes does not tally with the distribution of second round (constituency) votes. I would say, however, that they are unlikely to be significantly different, and the risk that they are not is worth it for the cause of greater democracy. (And would I be right in thinking a similar situation tends to occur in the USA, with opposing parties representing each of the chambers of Congress?)
General elections would, by my system, inevitably be a more lengthy and costly affair, but this could be compensated for by constitutionally increasing the length of service of a government and MPs. This, I would say, is okay, as the ruling party/parties have a greater mandate to rule under this more representative and democratic system.