I believe the issue is in the line
Color.FromArgb((int)cptRGB.Get(0) * 255, (int)cptRGB.Get(1)
* 255, (int)cptRGB.Get(2) * 255);
The cast to int is done before the multiplication by 255 so if the
color component value returned by Get is less than 1.0 your final
output will be zero.
It should be written Color.FromArgb((int)(cptRGB.Get(0) * 255), (int)
(cptRGB.Get(1) * 255), (int)(cptRGB.Get(2) * 255));
Regarding passwords, you should only use to the 'current' password
(the password that was passed in InitStdSecurityHandler("pass")). You
can determine which password is available using
(security_handler.GetPermission(SecurityHandler.Permission.e_owner)).
If
pdfdoc.GetSecurityHandler().GetPermission(SecurityHandler.Permission.e_owner)
returns true, the user supplied data is permission/owner password
(i.e. the user has full access to the document). Otherwise you have
open/user password.