What's there to fix? There are at least two critical issues that no computer software can fix.
1. Confidentiality, it's impossible to prove there's no shadow system recording who voted for what. In paper elections I pick my ballot and fold it so nobody can see what I vote for, the election officials register my vote as used and stamp it and then I put it in the ballot box. It's practically impossible to track which paper slip is mine beyond that point so barring hidden cameras in the booth my anonymity is now secure. With postal votes the votes go in a sealed envelope wrapped in another envelope with the voter card, they open the outer envelope and register the vote and put the sealed votes in a ballot box. Nobody is supposed to see your individual, identified vote. Of course anyone who gets hold of it can tear up both envelopes to see what you voted for, but there's one-time seals and stamps to prevent it happening covertly so it's very hard to do in scale.
With e-voting, you really just have to trust the system that it won't keep a secret record of the votes somewhere. You can wrap it in as much techno-babble as you want but if you just keep all the information and don't throw any away you can map voters to votes. Open source is no magic bullet that makes sure there's no root kit or secret backdoor or screen grabber or snooping hypervisor or system sniffing the network traffic using the voting machine's private keys. With paper voting you can pretty much prove that information goes away through the ballot box process, with e-voting you simply can't. You really think the NSA can't rig an e-voting machine so it records your vote and nobody would detect it? Then I've got a bridge to sell you.
2. Integrity, since you can't prove a particular vote was cast a particular way - and for good reason - the whole system relies on the integrity of the ballot box. The initial state (empty), the inputs (votes being put in) and output (emptied and counted) is closely guarded to see no funny business is happening. You can't guard a memory location, nor could you guarantee the votes in transit. If you got 50 people voting Democrat and 50 voting Republican nobody will realize if the vote came out 51-49 because someone decided to flip a bit or adjust a counter. You can make all sorts of theoretical proofs that the value won't change but they all rely on the assumption that the system won't be tampered with. Which is a pretty bad idea, when you're trying to assess how hard it'd be to tamper with it.
All you need to do is have some sort of switch to make sure it only does that during real elections and not testing. And it doesn't have to be a huge number of votes to matter, if you did that people would start to question why there's such a difference between the polls and elections anyway. Being able to throw swing votes is huge particularly in first past the post systems like the US, for example you could easily have swung the Bush/Gore race in Florida. Here in Europe the limit for representation in parliament is huge, in my country 4,01% and 3,99% is a world of difference and being able to knock one out could totally shift the balance of power between the blocks. Voting fraud doesn't have to be a third world problem with cheesy dictators and despots, there's plenty money and power involved to make it plausible in free and democratic countries too.