It should be 15 yards or point of the foul... whichever is shorter.
It is just too darn cheap to get 40 yard penalties.
Heck, if in the past decade the 15 yard penalty had been in place, I'm not sure Seattle wins nearly as many games. Wilson made an art of it.
Here's another change I'd like to see. Since the D gets penalty breaks for yardage marked off inside the 20, why shouldn't the O get the same? For instance: a team is on the 10 yard line. Personal foul for roughing the QB only moves the ball to the 5 yard line. If the O gets a personal foul for a cut block or something, it takes them all the way back to the 25 yard line. Unfair. In fact, illogical.