If you're only getting 300-310FPS with 0.2g BB's out of an M100 spring, either the spring is knackered or your air seal is pants - possibly both. An Element M105 gets the closest to the magic 350, but that is assuming a good air seal. You can get them quickly from Bullseye Country Sports via their webby, their amazon shop, or their fleabay shop for about a tenner posted. You can get them for half that from dualdealshop on fleabay or get-reload.com but you'll have to wait for HK post.
I'd start with cleaning the barrel with
alcohol swabs (£1.79 /100 posted = cheapest available) and cleaning rod (i think airsoftworld have them cheapest). Then reseat your hop rubber and wrap a couple of layers of PTFE tape around the part which doesn't have the bump, grease the outside with CT-2 Teflon Silicone grease: this will allow it to slide into the hop unit with the tape in place.
If you're still getting poor power, consider a new hop rubber, but also check the compression of your cylinder. First try squashing the piston into the cylinder with your thumb blocking the cylinder head tube (without the air seal nozzle). It should not leak at all. If it does, grease up the piston head O-ring with CT-2 and try again. If it still leaks you may need a new O-ring, but also check for scratches inside the cylinder and/or damage to the cylinder head. You can also stretch an old O-ring to make it seal better by forcing it over the outside of the cylinder and leaving it there for a few hours.
Once you know the cylinder compression is right, try it out with the air seal nozzle on. It will leak a bit, but you should not be able to press the piston all the way down quickly. An aluminium nozzle with 1 or 2 miniature O-rings is best.