It is not the card companies at fault here. If you choose to pay in your home currency then the local retailer and/or bank are the ones who benefit from the worse exchange rate.
VISA and MasterCard apply a very competitive rate to foreign currency transactions and if you look up, say, VISA Europe then you can check their exchange rate for major currencies. For VISA Sterling/Euro was 1.1406 today which is pretty good.
When you use VISA's calculator you will note that there is a box to insert a converter percentage. This is where your issuing bank is charging you a fee.
As noted above make sure you pay in local currency. Insist on this as retailers must offer you this option. If your issuing bank is charging you it is time to change your provider. And the cost may be much more than 3% - see the link to a BBC article which states that charges may range up to 10%. Ouch!
http://www.bbc.co.uk/news/business-40702496