There is an error on this line - the '20' being passed causes rainyday.js to only size the canvas to 20 width as the function engine.prepareBackground only expects the width and height to be passed.

If you remove it, the code works.