# Use gradientbackground and use vtkWindowToImageFilter's SetScale() ,picture background error!

**URL:** <https://discourse.vtk.org/t/use-gradientbackground-and-use-vtkwindowtoimagefilters-setscale-picture-background-error/13506>\
**Category:** Development\
**Created:** [March 11, 2024, 2:39pm UTC](https://discourse.vtk.org/t/use-gradientbackground-and-use-vtkwindowtoimagefilters-setscale-picture-background-error/13506 "2024-03-11T14:39:08Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![501586528](https://discourse.vtk.org/user_avatar/discourse.vtk.org/501586528/32/7907_2.png) [@501586528](https://discourse.vtk.org/u/501586528)\
**Post date:** [March 11, 2024, 2:39pm UTC](https://discourse.vtk.org/t/use-gradientbackground-and-use-vtkwindowtoimagefilters-setscale-picture-background-error/13506/1 "2024-03-11T14:39:08Z")

</div>

I want to print screen with high resolution, so I use vtkWindowToImageFilter and vtkPngWriter to save screen shot.Because I want to get high resolution screen, so i use vtkWindowToImageFilter’s SetScale() method, It works well in pure background and wrong in gradient background.

Here is a minimal reproduce example

```auto
 #include "vtkAutoInit.h"
 VTK_MODULE_INIT(vtkRenderingOpenGL2)
 VTK_MODULE_INIT(vtkInteractionStyle)
#include <vtkSmartPointer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkCylinderSource.h>
#include <vtkActor.h>
#include <vtkPolyDataMapper.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkWindowToImageFilter.h>
#include <vtkPNGWriter.h>

int main()
{
    vtkSmartPointer<vtkCylinderSource> cylinder = vtkSmartPointer<vtkCylinderSource>::New();
    cylinder->SetHeight(3.0);
    cylinder->SetRadius(1.0);
    cylinder->SetResolution(10);

    vtkSmartPointer<vtkPolyDataMapper> cylinderMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
    cylinderMapper->SetInputConnection(cylinder->GetOutputPort());
    vtkSmartPointer<vtkActor> cylinderActor = vtkSmartPointer<vtkActor>::New();
    cylinderActor->SetMapper(cylinderMapper);

    vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
    renderer->AddActor(cylinderActor);
    renderer->SetBackground(0.5,0.3,0.4);
    renderer->SetBackground2(69 / 255, 50 / 255, 100 / 255);
    renderer->SetGradientBackground(true);

    vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
    renWin->AddRenderer(renderer);
    renWin->SetSize(600,600);

    vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();
    iren->SetRenderWindow(renWin);

    renWin->Render();
    
    iren->Initialize();

    vtkSmartPointer<vtkWindowToImageFilter> filter = vtkSmartPointer<vtkWindowToImageFilter>::New();
    filter->SetInput(renWin);
    filter->SetScale(5);
    filter->ReadFrontBufferOff();
    filter->Update();

    vtkSmartPointer<vtkPNGWriter> writer = vtkSmartPointer<vtkPNGWriter>::New();
    writer->SetFileName("screenshot.png");
    writer->SetInputConnection(filter->GetOutputPort());
    writer->Write();

    iren->Start();
    return 0;
}

```

Here is my vtk program.

 ![企业微信截图_17101677697918](https://discourse.vtk.org/uploads/default/original/2X/6/645be0ba277c1e40a981a791159d3746a534689e.png)

Here is my picture.

 ![screenshot](https://discourse.vtk.org/uploads/default/original/2X/4/4cc241b3a664dedef573755348cf1a5870095262.png)

I want to keep their background color consistent. What should I do?

Thank you very much!
