/// <summary>
        /// Displays the image.
        /// </summary>
        /// <param name="imageAsBytes">The image as bytes.</param>
        /// <param name="scrollTo">The scroll to.</param>
        public void DisplayImage(byte[] imageAsBytes, ImageStartPosition scrollTo)
        {
            // If page information is displayed update it with new information
            if (PageInfoBox.Visibility == System.Windows.Visibility.Visible)
            {
                UpdatePageInformation();
            }

            switch (scrollTo.ToString())
            {
                case "Top":
                    {
                        ScrollField.ScrollToTop();
                        ScrollField.ScrollToLeftEnd();
                        break;
                    }

                case "Bottom":
                    {
                        ScrollField.ScrollToBottom();
                        ScrollField.ScrollToRightEnd();
                        break;
                    }

                default:
                    {
                        break;
                    }
            }

            BitmapImage bitmapimage = GetImage(imageAsBytes);

            _imageUtils.ObjectValue = imageAsBytes;
            this.Background = _imageUtils.BackgroundColor;

            if (Configuration.OverideHeight || Configuration.OverideWidth)
            {
                _imageUtils.ResizeImage(new System.Drawing.Size(bitmapimage.PixelWidth, (int)ScrollField.ViewportHeight), Configuration.OverideHeight, Configuration.OverideWidth);
                bitmapimage = GetImage(_imageUtils.ObjectValueAsBytes);
            }

            DisplayedImage.Source = bitmapimage;
            DisplayedImage.Width = bitmapimage.PixelWidth;
            DisplayedImage.Height = bitmapimage.PixelHeight;

            if (DisplayedImage.Width < ScrollField.ViewportWidth)
            {
                DisplayedImage.HorizontalAlignment = HorizontalAlignment.Center;
            }
            else if (DisplayedImage.Width >= ScrollField.ViewportWidth)
            {
                DisplayedImage.HorizontalAlignment = HorizontalAlignment.Left;
            }

            if (DisplayedImage.Height < ScrollField.ViewportHeight)
            {
                DisplayedImage.VerticalAlignment = VerticalAlignment.Center;
            }
            else if (DisplayedImage.Height >= ScrollField.ViewportHeight)
            {
                DisplayedImage.VerticalAlignment = VerticalAlignment.Top;
            }

            ShowPageInformation();
        }
        /// <summary>
        /// Displays the image.
        /// </summary>
        /// <param name="imageAsBytes">The image as bytes.</param>
        /// <param name="scrollTo">The scroll to.</param>
        public void DisplayImage(byte[] imageAsBytes, ImageStartPosition scrollTo)
        {
            if (Configuration.DoublePage)
            {
                var image1 = _comicBook.CurrentFile.CurrentPage;
                var image2 = _comicBook.CurrentFile.NextPage();

                _imageUtils.DrawDouble(image1, image2,
                                       new System.Drawing.Size((int)ScrollField.ViewportWidth, (int)ScrollField.ViewportHeight),
                                       Configuration.OverrideHeight, Configuration.OverrideWidth);
                imageAsBytes = _imageUtils.ObjectValueAsBytes;
            }

            // If page information is displayed update it with new information
            if (PageInfoBox.Visibility == Visibility.Visible)
            {
                UpdatePageInformation();
            }

            switch (scrollTo.ToString())
            {
                case "Top":
                    {
                        ScrollField.ScrollToTop();
                        ScrollField.ScrollToLeftEnd();
                        break;
                    }

                case "Bottom":
                    {
                        ScrollField.ScrollToBottom();
                        ScrollField.ScrollToRightEnd();
                        break;
                    }

                default:
                    {
                        break;
                    }
            }

            BitmapImage bitmapimage = GetImage(imageAsBytes);

            _imageUtils.ObjectValue = imageAsBytes;

            // KBR TODO lets try skipping this altogether - maybe reduce memory footprint
            //try
            //{
            //    // This can fail when viewing an archive, and a large image.
            //    Background = _imageUtils.BackgroundColor;
            //}
            //catch
            //{
            //}

            try
            {
                // This can fail when viewing an archive, and a large image.
                if (Configuration.OverrideHeight || Configuration.OverrideWidth)
                {
                    // KBR 20141230 passing in the bitmap width for the destination size is wrong and relies on "screenwidth" which isn't maintained properly. See comment in ToggleWindowMode()
                    //_imageUtils.ResizeImage(new System.Drawing.Size(bitmapimage.PixelWidth, (int)ScrollField.ViewportHeight), Configuration.OverrideHeight, Configuration.OverrideWidth);
                    _imageUtils.ResizeImage(new System.Drawing.Size((int)ScrollField.ViewportWidth, (int)ScrollField.ViewportHeight), Configuration.OverrideHeight, Configuration.OverrideWidth);
                    bitmapimage = GetImage(_imageUtils.ObjectValueAsBytes);
                }
            }
            catch
            {
            }

            DisplayedImage.Source = bitmapimage;
            DisplayedImage.Width = bitmapimage.PixelWidth;
            DisplayedImage.Height = bitmapimage.PixelHeight;

            if (DisplayedImage.Width < ScrollField.ViewportWidth)
            {
                DisplayedImage.HorizontalAlignment = HorizontalAlignment.Center;
            }
            else if (DisplayedImage.Width >= ScrollField.ViewportWidth)
            {
                DisplayedImage.HorizontalAlignment = HorizontalAlignment.Left;
            }

            if (DisplayedImage.Height < ScrollField.ViewportHeight)
            {
                DisplayedImage.VerticalAlignment = VerticalAlignment.Center;
            }
            else if (DisplayedImage.Height >= ScrollField.ViewportHeight)
            {
                DisplayedImage.VerticalAlignment = VerticalAlignment.Top;
            }

            ShowPageInformation();

            GC.Collect();
        }