I detest Sapphire as a contracting agency - they only seem to care about their cut. They play the numbers game, throwing loads of resumes at a position in the hope that one sticks, without paying much regard to matching the resume to the position. As a result, whoever's doing the hiring has to read a bunch of crap. The final straw for me came after a couple of hours weeding through a stack of predominately useless resumes, only to then find a candidate with an identical job history to one of the first resumes. Copy'n'paste identical over several years. At that point I told my boss that I wasn't going to read another Sapphire-supplied resume as I couldn't trust them.
For a company of their size and history, they have no excuse for this behaviour. If _they_ made a mistake then _they_ should eat it, not force you to. Face it, that $1.50/hr is nothing compared to their revenue, and they can easily absorb it.
Furthermore, the company offered you $26.50/hr that you accepted. They have _no_ legal right to refuse you that now. Admittedly if it wasn't ever put in writing then you'd have a hard time proving it, and it possibly wouldn't be economical to go the legal route anyway.
Two possible strategies that I can think of;

1) Hardball. Suggest to Sapphire that a disgruntled representative might make it harder for them to get that work in the future. You'd have to be careful not to go over the line here.

or,
2) Refuse to accept the $25/hr rate (I assume you haven't so far). Keep going to work as usual, and then dispute (in writing) the paychecks. Hopefully you'll eventually get something in writing from them that acknowledges that they have adjusted (post-offer) your rate downwards. Keep working for 6 months or so whilst looking for a different job with another agency (or independant). Once you've changed jobs, take that stack of correspondance to the small claims court and sue them for breach of contract. (26 weeks of $1.50/hour sums to $1560).
_________________________
Mk2a 60GB Blue. Serial 030102962 sig.mp3: File Format not Valid.