﻿<?xml version="1.0" encoding="utf-8"?>
<InstanceReport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Version>2.2.0.7</Version>
  <hasSegments>false</hasSegments>
  <ReportName>Comprehensive Income</ReportName>
  <ReportLongName>0204 - Disclosure - Comprehensive Income</ReportLongName>
  <DisplayLabelColumn>true</DisplayLabelColumn>
  <ShowElementNames>false</ShowElementNames>
  <RoundingOption />
  <HasEmbeddedReports>false</HasEmbeddedReports>
  <Columns>
    <Column>
      <LabelColumn>false</LabelColumn>
      <Id>1</Id>
      <Labels>
        <Label Id="1" Label="6 Months Ended" />
        <Label Id="2" Label="Jul. 03, 2010" />
      </Labels>
      <CurrencyCode>USD</CurrencyCode>
      <FootnoteIndexer />
      <hasSegments>false</hasSegments>
      <hasScenarios>false</hasScenarios>
      <Segments />
      <Scenarios />
      <Units>
        <Unit>
          <UnitID>USD</UnitID>
          <UnitType>Standard</UnitType>
          <StandardMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/iso4217</MeasureSchema>
            <MeasureValue>USD</MeasureValue>
            <MeasureNamespace>iso4217</MeasureNamespace>
          </StandardMeasure>
          <Scale>0</Scale>
        </Unit>
        <Unit>
          <UnitID>USDEPS</UnitID>
          <UnitType>Divide</UnitType>
          <NumeratorMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/iso4217</MeasureSchema>
            <MeasureValue>USD</MeasureValue>
            <MeasureNamespace>iso4217</MeasureNamespace>
          </NumeratorMeasure>
          <DenominatorMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/instance</MeasureSchema>
            <MeasureValue>shares</MeasureValue>
            <MeasureNamespace>xbrli</MeasureNamespace>
          </DenominatorMeasure>
          <Scale>0</Scale>
        </Unit>
      </Units>
      <CurrencySymbol>$</CurrencySymbol>
    </Column>
  </Columns>
  <Rows>
    <Row>
      <Id>2</Id>
      <Label>Comprehensive Income [Abstract]</Label>
      <Level>0</Level>
      <ElementName>us-gaap_ComprehensiveIncomeNoteAbstract</ElementName>
      <ElementPrefix>us-gaap</ElementPrefix>
      <IsBaseElement>true</IsBaseElement>
      <BalanceType>na</BalanceType>
      <PeriodType>duration</PeriodType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>true</IsAbstractGroupTitle>
      <IsEquityPrevioslyReportedAsRow>false</IsEquityPrevioslyReportedAsRow>
      <IsEquityAdjustmentRow>false</IsEquityAdjustmentRow>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsReverseSign>false</IsReverseSign>
      <PreferredLabelRole />
      <IsEPS>false</IsEPS>
      <FootnoteIndexer />
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>false</IsNumeric>
          <IsRatio>false</IsRatio>
          <DisplayZeroAsNone>false</DisplayZeroAsNone>
          <NumericAmount>0</NumericAmount>
          <RoundedNumericAmount>0</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
          <DisplayDateInUSFormat>false</DisplayDateInUSFormat>
        </Cell>
      </Cells>
      <OriginalInstanceReportColumns />
      <ElementDataType>xbrli:stringItemType</ElementDataType>
      <SimpleDataType>string</SimpleDataType>
      <ElementDefenition>No definition available.</ElementDefenition>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
    <Row>
      <Id>3</Id>
      <Label>Comprehensive Income</Label>
      <Level>1</Level>
      <ElementName>us-gaap_ComprehensiveIncomeNoteTextBlock</ElementName>
      <ElementPrefix>us-gaap</ElementPrefix>
      <IsBaseElement>true</IsBaseElement>
      <BalanceType>na</BalanceType>
      <PeriodType>duration</PeriodType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>false</IsAbstractGroupTitle>
      <IsEquityPrevioslyReportedAsRow>false</IsEquityPrevioslyReportedAsRow>
      <IsEquityAdjustmentRow>false</IsEquityAdjustmentRow>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsReverseSign>false</IsReverseSign>
      <PreferredLabelRole>verboselabel</PreferredLabelRole>
      <IsEPS>false</IsEPS>
      <FootnoteIndexer />
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>false</IsNumeric>
          <IsRatio>false</IsRatio>
          <DisplayZeroAsNone>false</DisplayZeroAsNone>
          <NumericAmount>0</NumericAmount>
          <RoundedNumericAmount>0</RoundedNumericAmount>
          <NonNumbericText>&lt;!--DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" --&gt;
   &lt;!-- Begin Block Tagged Note 4 - us-gaap:ComprehensiveIncomeNoteTextBlock--&gt;
   &lt;div style="font-family: 'Times New Roman',Times,serif"&gt;
   &lt;div align="left" style="font-size: 10pt; margin-top: 12pt"&gt;&lt;b&gt;(4)&amp;#160;Comprehensive Income:&lt;/b&gt;
   &lt;/div&gt;
   &lt;div align="left" style="font-size: 10pt; margin-top: 6pt"&gt;For the Company, comprehensive income consists of net income and other comprehensive income (loss)
   which is comprised primarily of foreign currency translation adjustments.
   &lt;/div&gt;
   &lt;div align="center"&gt;
   &lt;table style="font-size: 10pt; text-align: left" cellspacing="0" border="0" cellpadding="0" width="100%"&gt;
   &lt;!-- Begin Table Head --&gt;
   &lt;tr valign="bottom"&gt;
       &lt;td width="52%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="5%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="3%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="1%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="3%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="5%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="3%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="1%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="3%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="5%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="3%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="1%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="3%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="5%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="3%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="1%"&gt;&amp;#160;&lt;/td&gt;
       &lt;td width="3%"&gt;&amp;#160;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr style="font-size: 8pt" valign="bottom"&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td nowrap="nowrap" align="center" colspan="7" style="border-bottom: 1px solid #000000"&gt;&lt;b&gt;Second Quarter Ended&lt;/b&gt;&lt;/td&gt;
       &lt;td style="border-bottom: 1px solid #000000"&gt;&amp;#160;&lt;/td&gt;
       &lt;td nowrap="nowrap" align="center" colspan="7" style="border-bottom: 1px solid #000000"&gt;&lt;b&gt;First Half Ended&lt;/b&gt;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr style="font-size: 8pt" valign="bottom"&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td nowrap="nowrap" align="center" colspan="3"&gt;July 3, 2010&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td nowrap="nowrap" align="center" colspan="3"&gt;July 4, 2009&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td nowrap="nowrap" align="center" colspan="3"&gt;July 3, 2010&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td nowrap="nowrap" align="center" colspan="3"&gt;July 4, 2009&lt;/td&gt;
   &lt;/tr&gt;
   &lt;!-- End Table Head --&gt;
   &lt;!-- Begin Table Body --&gt;
   &lt;tr style="font-size: 1px"&gt;
       &lt;td colspan="17" align="left" style="border-top: 1px solid #000000"&gt;&amp;#160;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr valign="bottom" style="background: #cceeff"&gt;
       &lt;td&gt;
   &lt;div style="margin-left:15px; text-indent:-15px"&gt;Net income
   &lt;/div&gt;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td align="right"&gt;$&lt;/td&gt;
       &lt;td align="right"&gt;17,816,000&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td align="right"&gt;$&lt;/td&gt;
       &lt;td align="right"&gt;8,359,000&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td align="right"&gt;$&lt;/td&gt;
       &lt;td align="right"&gt;31,643,000&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td align="right"&gt;$&lt;/td&gt;
       &lt;td align="right"&gt;18,483,000&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr valign="bottom"&gt;
       &lt;td&gt;
   &lt;div style="margin-left:15px; text-indent:-15px"&gt;Other comprehensive
   income (loss)
   &lt;/div&gt;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td nowrap="nowrap" align="right"&gt;&amp;#160;&lt;/td&gt;
       &lt;td align="right"&gt;(1,711,000&lt;/td&gt;
       &lt;td nowrap="nowrap"&gt;)&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td align="right"&gt;6,198,000&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td nowrap="nowrap" align="right"&gt;&amp;#160;&lt;/td&gt;
       &lt;td align="right"&gt;(4,540,000&lt;/td&gt;
       &lt;td nowrap="nowrap"&gt;)&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td align="right"&gt;3,388,000&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr style="font-size: 1px"&gt;
       &lt;td colspan="17" align="left" style="border-top: 1px solid #000000"&gt;&amp;#160;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr valign="bottom" style="background: #cceeff"&gt;
       &lt;td&gt;
   &lt;div style="margin-left:15px; text-indent:-15px"&gt;Comprehensive income
   &lt;/div&gt;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td align="right"&gt;$&lt;/td&gt;
       &lt;td align="right"&gt;16,105,000&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td align="right"&gt;$&lt;/td&gt;
       &lt;td align="right"&gt;14,557,000&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td align="right"&gt;$&lt;/td&gt;
       &lt;td align="right"&gt;27,103,000&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
       &lt;td align="right"&gt;$&lt;/td&gt;
       &lt;td align="right"&gt;21,871,000&lt;/td&gt;
       &lt;td&gt;&amp;#160;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr style="font-size: 1px"&gt;
       &lt;td colspan="17" align="left" style="border-top: 3px double #000000"&gt;&amp;#160;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;!-- End Table Body --&gt;
   &lt;/table&gt;
   &lt;/div&gt;
   &lt;!-- Folio --&gt;
   &lt;!-- /Folio --&gt;
   &lt;/div&gt;
   &lt;!-- PAGEBREAK --&gt;
   &lt;div style="font-family: 'Times New Roman',Times,serif"&gt;
   &lt;/div&gt;
</NonNumbericText>
          <NonNumericTextHeader>&lt;!--DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" --&gt;
   &lt;!-- Begin Block Tagged Note</NonNumericTextHeader>
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
          <DisplayDateInUSFormat>false</DisplayDateInUSFormat>
        </Cell>
      </Cells>
      <OriginalInstanceReportColumns />
      <ElementDataType>us-types:textBlockItemType</ElementDataType>
      <SimpleDataType>textblock</SimpleDataType>
      <ElementDefenition>This label may include the following:  1) the amount of income tax expense or benefit allocated to each component of other comprehensive income, including reclassification adjustments, 2) the reclassification adjustments for each classification of other comprehensive income and 3) the ending accumulated balances for each component of comprehensive income. Components of comprehensive income include: (1) foreign currency translation adjustments; (2) gains and losses on foreign currency transactions that are designated as, and are effective as, economic hedges of a net investment in a foreign entity; (3) gains and losses on intercompany foreign currency transactions that are of a long-term-investment nature, when the entities to the transaction are consolidated, combined, or accounted for by the equity method in the reporting enterprise's financial statements; (4) change in the market value of a futures contract that qualifies as a hedge of an asset reported at fair value; (5) unrealized holding gains and losses on available-for-sale securities and that resulting from transfers of debt securities from the held-to-maturity category to the available-for-sale category; (6) a net loss recognized as an additional pension liability not yet recognized as net periodic pension cost; and (7)  the net gain or loss and net prior service cost or credit for pension plans and other postretirement benefit plans.</ElementDefenition>
      <ElementReferences>Reference 1: http://www.xbrl.org/2003/role/presentationRef
 -Publisher FASB
 -Name Statement of Financial Accounting Standard (FAS)
 -Number 130
 -Paragraph 14-26

</ElementReferences>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
  </Rows>
  <Footnotes />
  <NumberOfCols>1</NumberOfCols>
  <NumberOfRows>2</NumberOfRows>
  <HasScenarios>false</HasScenarios>
  <MonetaryRoundingLevel>UnKnown</MonetaryRoundingLevel>
  <SharesRoundingLevel>UnKnown</SharesRoundingLevel>
  <PerShareRoundingLevel>UnKnown</PerShareRoundingLevel>
  <HasPureData>false</HasPureData>
  <SharesShouldBeRounded>true</SharesShouldBeRounded>
</InstanceReport>
