When you compress the database, the compressed files should be smaller then the original files. It has nothing to do with how full the database is. This is what compression does. If you want to check how much space is used in the database, you can use sp_spaceused procedure.

The database size is allocated size, not data size. SQL Server, by design, maintains empty space within the data and log files in order to allow for growth of your database without having to go to the disk to allocate more space. It's normal. You'll regularly see the backup size different than the storage size. You can get a quick idea about the allocated size, used size and unallocated amounts by querying sys.dm_db_file_space_usage.