I first deleted all the old files, then extracted the new - only to find that the 'new' .zip was only 3 files; frmMain.ifm & .pas plus uniGraphics.pas.
That has been the case with all of the zip files I've uploaded. I've never included the entire project tree. It's always just been those three files.
Regarding your problem though.. that is extremely strange! I honestly don't think it has anything to do with BGRABitmap at all. Is it possible that the compiler is referring to the Width and Height properties of TRect, and not TBGRABitmap? What version of FPC are you using? Also, when you right-click on the TRect part of the variable declaration "Rect: TRect" (at line 722 of my most recent upload) and choose "find declaration of TRect", which file exactly are you brought to?
Additionally, what happens if you change the variable name "Rect" to "ARect"? (Make sure you change it in all the places it occurs in the overall UpdateButtonImage procedure, obviously.) This is what I would probably have called it from the outset had I originally written the method myself, as there is of course an RTL method also called Rect that
returns a TRect. (And in my experience variables that have the same name as methods that are visible to the unit they're declared in are almost always bad news bears.) It's not unlikely that the naming conflict could be at least part of your issue...