After seeing how expensive custom cushions can be, I decided to build a custom outdoor sofa around the dimensions of the cushions instead of the other way around. I took some plans for a chair and modified the dimensions. I also gave the seat a 7 degree downward slope and gave the backrest a similar angle to in order to keep the cushions from falling over since each section is a single piece (seat & backrest).
I used a jigsaw to round out the corners of the armrest and then sanded them smooth. I ended up painting it white (hard to see in the 2nd picture) and it came out great.