I bought a 2005 2820 and it had the same problem. Mine also had holes drilled through it where they had previously mounted stuff on the top. I went round and round on what to do and after much thought, I found a matching carpet at a auto upholstery shop in Riverside CA. I pulled down the old headliner and used it as a templet to cut the new carpet in the same shape, leaving a couple extra inches all around. I scraped and sanded as much of the old glue off as I could...took about half a day and was a messy job. Next I masked off all the side walls and sprayed the lid with a 3M headliner glue doing a couple coats on the lid and the carpet also. My son and I starting in the middle pushed the carpet up and slowly spread it towards the edges, pushing out the wrinkles as we went. When we got all the way to the edge, I carefully trimmed off the extra with a razor knife. I could not have been happier with the way it came out, looks just like new from the factory. In all it took about 1.5 days and cost about $200. The place i found the matching Headliner fabric is called J&J Auto Fabrics....they also sell online at J&Jautofabrics.com under "headliner Material" you will see a Cloth called "Rontex Marine Hull Liner". Its been a while since I did it, but I am 99% sure the color is the "sand blend".
Good Luck, and feel free to ask if you have any questions.