diff --git a/NTwain/TwainSessionExtensions.cs b/NTwain/TwainSessionExtensions.cs
index b81e525..00044f3 100644
--- a/NTwain/TwainSessionExtensions.cs
+++ b/NTwain/TwainSessionExtensions.cs
@@ -372,7 +372,8 @@ namespace NTwain
///
public static IList CapGetDPIs(this TwainSession session)
{
- return session.GetCapabilityValues(CapabilityId.ICapXResolution).Cast().ToList();
+ var list = session.GetCapabilityValues(CapabilityId.ICapXResolution);
+ return list.Select(o => o.ConvertToFix32()).ToList();
}
///
diff --git a/NTwain/Values/ValueConverter.cs b/NTwain/Values/ValueConverter.cs
index 3b08d17..a2921a9 100644
--- a/NTwain/Values/ValueConverter.cs
+++ b/NTwain/Values/ValueConverter.cs
@@ -1,4 +1,5 @@
-using System;
+using NTwain.Data;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -67,5 +68,19 @@ namespace NTwain.Values
{
return (ushort)(value >> 16);
}
+
+ ///
+ /// Tries to convert to a value to if possible.
+ ///
+ /// The value.
+ ///
+ public static TWFix32 ConvertToFix32(this object value)
+ {
+ if (value is TWFix32)
+ {
+ return (TWFix32)value;
+ }
+ return (TWFix32)Convert.ToSingle(value);
+ }
}
}