diff --git a/src/KeePassLib2Android/Serialization/KdbxFile.Read.Streamed.cs b/src/KeePassLib2Android/Serialization/KdbxFile.Read.Streamed.cs
index b2e7f701..630aa2e9 100644
--- a/src/KeePassLib2Android/Serialization/KdbxFile.Read.Streamed.cs
+++ b/src/KeePassLib2Android/Serialization/KdbxFile.Read.Streamed.cs
@@ -24,9 +24,6 @@ using System.IO;
using System.Text;
using System.Xml;
using keepass2android;
-#if !KeePassUAP
-using System.Drawing;
-#endif
using KeePassLib;
using KeePassLib.Collections;
diff --git a/src/KeePassLib2Android/Serialization/KdbxFile.cs b/src/KeePassLib2Android/Serialization/KdbxFile.cs
index 2b94bde1..2fff60c5 100644
--- a/src/KeePassLib2Android/Serialization/KdbxFile.cs
+++ b/src/KeePassLib2Android/Serialization/KdbxFile.cs
@@ -67,6 +67,51 @@ namespace KeePassLib.Serialization
///
public sealed partial class KdbxFile
{
+ ///
+ /// System.Drawing.ColorTranslator is not supported on Android. Provide a custom implementation here for loading colors from file.
+ ///
+ private class ColorTranslator
+ {
+ public static Color FromHtml(String colorString)
+ {
+ Color color;
+
+ if (colorString.StartsWith("#"))
+ {
+ colorString = colorString.Substring(1);
+ }
+ if (colorString.EndsWith(";"))
+ {
+ colorString = colorString.Substring(0, colorString.Length - 1);
+ }
+
+ int red, green, blue;
+ switch (colorString.Length)
+ {
+ case 6:
+ red = int.Parse(colorString.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
+ green = int.Parse(colorString.Substring(2, 2), System.Globalization.NumberStyles.HexNumber);
+ blue = int.Parse(colorString.Substring(4, 2), System.Globalization.NumberStyles.HexNumber);
+ color = Color.FromArgb(red, green, blue);
+ break;
+ case 3:
+ red = int.Parse(colorString.Substring(0, 1), System.Globalization.NumberStyles.HexNumber);
+ green = int.Parse(colorString.Substring(1, 1), System.Globalization.NumberStyles.HexNumber);
+ blue = int.Parse(colorString.Substring(2, 1), System.Globalization.NumberStyles.HexNumber);
+ color = Color.FromArgb(red, green, blue);
+ break;
+ case 1:
+ red = green = blue = int.Parse(colorString.Substring(0, 1), System.Globalization.NumberStyles.HexNumber);
+ color = Color.FromArgb(red, green, blue);
+ break;
+ default:
+ throw new ArgumentException("Invalid color: " + colorString);
+ }
+ return color;
+ }
+
+ }
+
///
/// File identifier, first 32-bit value.
///