I dont have a solution for you, but I do have a reason
typically the ram in these things is split down the middle of the screen in two banks, seems that your code is sending the same data to both banks of ram, thus double vision
i am agree with you that both chips receiving the same info, but i am sure that CS1 and CS2 are not connected together and it works with the demo program !
I have seen this issue before, it is more than likely a wiring error.
Run the diag sketch that comes with the library and then look at the trouble shooting
guide in the included documentation for some tips on how to resolve it.
My guess is that the chip selects are mis wired or the connections used on them are not making proper contact.
Floating or mis connected chip selects can create the type of output you are seeing.
The diags will show chip numbers on the display which can help isolate the problem.
Run it and if you are still having issues. Post the text diag output and also describe
what you see when the diag sketch runs.