This actually works as intended.
The problem is that Bitmaps are stored in premultiplied alpha format. This means that when you set a pixel value to 0xa9fefefe, the stored value is actually 0xa9a8a8a8 (0xa9*0xfe/255=0xa8.) Then when you call getPixel(), the stored value is "un-premultiplied." With rounding errors you get 0xa9fdfdfd.
Here is a breakdown, you pass an ARGB value of 0xa9fefefe. Each RGB byte will be multiplied by the alpha value before being stored. To simplify we'll look at the red byte only:
R=169*254/255 R=168 (or 0xa8)
Then when you call getPixel(), the RGB bytes are divided by the alpha:
R=255*168/169 R=253 (or 0xfd)