I had been looking at drawing seamless tiles. There is a trick to it...
Let's say that the tiles are to be 200 x 200 pixels. Draw a 200 x 200 background template. Anything that is to cross the left edge has to be replicated exactly 200 pixels to the right. Similarly, anything that crosses the top edge has to be replicated exactly 200 pixels lower. If an object crosses a corner, you would have to apply the offsets to copies in the other 3 corners.
You can draw what you like within the template area. You could draw a set of tiles with different content in their central areas as long as all edges obey the tiling rules. Crop out the 200 x 200 pixel area within the template to make your tile. You could tile an area with a random selection of the tiles and they would match up seamlessly but look a bit less repetitive. If you made the backgrounds transparent then the tiles could be overlaid on any background of your choice.
I was going to do this for some puzzle games that I am working on but I discovered that I can easily generate random 'noise'-based backgrounds like these which I will use instead of tiles...