The problem here is a disconnect between the SharePoint list's return values and InfoPath's functionality. The values it actually sends down for a checkbox list item are 1 for True/Yes and 0 for False/No, but InfoPath's default behavior for checkboxes is to show them as checked when the value is "true", and unchecked otherwise, and to make matters worse, you can't modify a checkbox's properties when it's bound to a secondary data source.
The solution is to modify the XSL file that generates the view. Save your form as its source files, and open up the XSL file that represents your view. Search for the name of the field in question and you should find the XSL that corresponds to your checkbox:
<input class="xdBehavior_Boolean" title="" type="checkbox" xd:CtrlId="CTRL4" xd:xctname="CheckBox" tabIndex="0" xd:binding="@YesNoColumn" xd:boundProp="xd:value" xd:offValue="false" xd:onValue="true">
<xsl:attribute name="xd:value">
<xsl:value-of select="@YesNoColumn"/>
</xsl:attribute>
<xsl:if test="@YesNoColumn="true"">
<xsl:attribute name="CHECKED">CHECKED</xsl:attribute>
</xsl:if>
</input> Yes No Column
Note the bold underlined parts above. Try changing the false to 0 and the two trues to 1. Then save the file. Right-click manifest.xsf and select Design to reopen the form and try it again. Note that even after doing this, the checkboxes will behave strangely, so you might want to disable them.