I finally figured out what went wrong.
I am using Linux OS to do this kind of work. and due to limitation of this old laptop (the only laptop I have which has a CD player built in), I only have 8GB of RAM. Split between musicbrainz picard, file manager, browser, I don't have much memory left. Thus, I tried to use command-line based application as much as possible.
For ripping CDs, I uses this thing called abcde. I deliberately set to use freedb to rip info just for comparison sake.
For scanning, i use this commandline called scanimage.
And apparently, there is a bug in scanimage. Eventhough I specified the format to PNG, but the output end up being a bitmap file.
The reason why it took me so long to figure out that the output file is in an incorrect format is because ALL my picture viewing software on Linux is smart enough to show the picture file I scanned despite the extension doesn't reflect the actual file type.
I only found out about it by trying to display my scanned files in a Windows machine. The software there told me that the file is in different format.
So, everything worked. My first ever uploaded cover art is here:
By the way, the only reason why I use 200 dpi is also because this silly scanimage command: when I specified 300dpi, it automatically changed to something different. what make it worse that x dpi and y dpi are different thus result is actually an elongated rectangle. Only 200 dpi and 600 dpi would remain the same.
Let me know if you think there is room for improvement in terms of resolution, contrast, brightness, etc. I am doing this in a commandline thus I can do this relatively consistently