It's because when you used modal verbs and lassen in the Perfekt with another verb, you keep it in the infinitive, generally, though werden for some reason seems to be a little bit irregular in this case, using "worden" instead of "werden" for its Perfekt conjugation.
Das habe ich gekonnt. - I used to be able to do that.
Ich habe schwimmen können. - I used to be able to swim.
Das hättest du machen sollen. - You should have done that.
Werden is trickier for some reason...
If you pay close attention, you use "worden" when the "adjective" is actually a verb form, almost always a past participle.
Der Baum ist sehr groß geworden. - The tree got very big. Big is a normal adjective. It is not any participle. Because of that, you use geworden.
Der Baum ist gebrannt worden. - The tree got burnt. Burnt is the past participle of to burn, so you use worden. (By the way, I know this is definitely not the most idiomatic way to say this, for any nit-pickers out there. I couldn't think of another example off the top of my head--it's just to illustrate the grammatical concept!)
Another note on these, when you have a situation like this in a subordinate clause, haben is always the first verb in the final string of verbs when there are 3 or more. For example:
Er hätte ein Kuchen backen sollen. - He should have baked a cake
But:
Wir wissen alle, dass er einen Kuchen hätte backen sollen -and NOT- dass er einen Kuchen backen sollen hätte.
Hope that helped.